-2
Je suis en mesure de le faire:Comment os.File implémente-t-il io.Writer?
f, err := os.Create("file")
if err != nil {
....
}
by := bufio.NewWriter(f)
Et ceci:
var _ io.Writer = &os.File{}
La documentation du paquet pour os.File conduit à this source file qui ne contient une désexporter fonction d'écriture mais j'obtiens une erreur lorsque J'essaye d'implémenter une interface avec une fonction non exportée.
var _ Disease = &Scratch{} // *Scratch doesn't implement Disease have spread() want Spread()
type Disease interface {
Spread()
}
type Scratch struct {
....
}
func (s* Scratch) spread() {
....
}
Que manque-t-il?
Mise à jour: os.File did need cleaning up
Je ne sais pas ce que vous demandez en fait, mais 'met en œuvre os.File' [Write] (https://golang.org/src/os/file.go#L138) – tkausl
Ah, ça peut être un [mauvais lien] (https://golang.org/pkg/os/#File) parce que ce lien de fichier va à [file_unix.go] (https://golang.org/src/os/file_unix.go?s=597:624#L17) pas à file.go et je n'ai pas regardé le nom de fichier de près – Sridhar
Ok ce n'est pas un mauvais lien. Le type de fichier est redéfini dans plusieurs fichiers sous src/os mais les méthodes exportées sont toutes dans un fichier différent. Maintenant, la question qui se pose est de savoir comment la redéfinition dans le même paquet est autorisée? – Sridhar