Jest to prosto z Andrew Gerrand na 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) }
Aby to działało, trzeba będzie napisać kod do podjęcia fileSystem
argumentu (może umieścić go w jakimś innym rodzaju, albo niech nil
Oznaczmy domyślny system plików).
To wygląda obiecująco, ale co z bezpośrednimi połączeniami z 'os.Open'? Czy przypisanie zmiennej 'fs' wpłynie na nią" po cichu "? – canni
@canni: nie, nie wpłynie to na połączenia bezpośrednie. Jeśli tego chcesz, myślę, że będziesz musiał grać sztuczki na linkerze i nigdy tego nie próbowałem. –
Chciałbym zobaczyć przykład działającego kodu. – Paradiesstaub