Đây là trực tiếp từ Andrew Gerrand của 10 things you (probably) don't know about Go:
var fs fileSystem = osFS{}
type fileSystem interface {
Open(name string) (file, error)
Stat(name string) (os.FileInfo, error)
}
type file interface {
io.Closer
io.Reader
io.ReaderAt
io.Seeker
Stat() (os.FileInfo, error)
}
// osFS implements fileSystem using the local disk.
type osFS struct{}
func (osFS) Open(name string) (file, error) { return os.Open(name) }
func (osFS) Stat(name string) (os.FileInfo, error) { return os.Stat(name) }
Để làm việc này, bạn sẽ cần phải viết mã của bạn để có một cuộc tranh luận fileSystem
(có thể nhúng nó trong một số loại khác, hoặc để nil
biểu thị hệ thống tệp mặc định).
Nguồn
2013-05-24 19:43:54
Điều đó có vẻ đầy hứa hẹn, nhưng còn những cuộc gọi trực tiếp đến 'os.Open' thì sao? là việc gán biến 'fs' sẽ" âm thầm "ảnh hưởng đến chúng? – canni
@canni: không, nó sẽ không ảnh hưởng đến các cuộc gọi trực tiếp. Nếu đó là những gì bạn muốn, tôi nghĩ rằng bạn sẽ phải chơi thủ đoạn trên mối liên kết, và tôi chưa bao giờ thử điều đó bản thân mình. –
Tôi rất thích xem ví dụ về mã hoạt động. – Paradiesstaub