-2
私はgolangを初めて使っています。ドキュメント、os.Open
戻り(*File, error)
タイプ、およびbufio.NewScanner(r)
の引数r
はio.Reader
タイプをしているによるとどのように*ファイルタイプはReaderタイプとして渡すことができますか?
file, err := os.Open("input.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
...
:私はこのようなgolangコードを見ました。上記のコード例で
、*File
の種類(File
型へのポインタ)を有する可変file
引数がio.Reader
タイプを期待してbufio.NewScanner
メソッドに渡すことができます。それはどうすれば可能ですか?
File
タイプ(
https://golang.org/src/os/types.go?s=369:411#L6)、および
io.Reader
タイプ(
https://golang.org/src/io/io.go?s=3303:3363#L67は)思わ無関係です。では、どのようにパラメータを渡すことが可能ですか?
[この行](https://golang.org/src/os/file.go?s=7374:7411#L97)(行97)のためですか?これは '* File'が' Read(b [] byte)(n int、err error) 'メソッドを実装したことを伝えていますか? – null
はい、そのメソッドは 'io.Reader'の要件を満たしています。 – Adrian
うん、それは面白い、Javaから来ている人として、私はGoのインターフェイス実装の構文設計が少し奇妙であることが分かった。私は彼らが型定義と同じ場所に置かれることを期待していました。 – null