File構造体を見ると、 andインターフェイスと関数とまったく同じ and 関数がRead()あります。しかし、パッケージはパッケージ内のどこにもありません(インポートされていません)。これは、インターフェイスを使用するためにインポートする必要がまったくないということですか? 定義がインターフェイスと同じである限り、それがorインターフェイスの一部であることを暗示できますか?Write()io.Writerio.ReaderRead()Write()ioFileRead()io.Writerio.Reader
1569 次
2 に答える
11
インターフェースが package で使用されていないため、Packageは packageをosインポートしません。ioio.Readeros
正しいシグネチャを持つメソッドがあるため、型*Fileはたまたま実装されます。この実装関係は暗黙的であり、これを明示的にする必要はなく、可能でもありません(たとえば、Java の with のように)。io.ReaderReadimplements ISomeThing
あなたは尋ねました:「これは、インターフェイスを使用するためにインポートする必要がまったくないということですか?」正式な答えは次のとおりです。使用したい場合は、するio.Reader必要がありますimport "io"。
しかし、インターフェイスの実装/満足は、このインターフェイスの使用ではありません。適切なメソッドを持つだけで、任意のタイプが任意のインターフェイス (Jet が発明されていない将来のものであっても) を実装します。
于 2013-07-09T22:58:24.317 に答える