例:
パッケージio
では、タイプByteReader
はメソッドをラップするインターフェースを定義しますReadByte() (c byte, err error)
。
標準ライブラリ(つまり、golang.org / pkgにリストされている)のどのタイプがこのインターフェイスを満たすかを見つける 最も簡単な方法は何ですか?
これは単なる経験の問題ですか、それとも他の助けがありますか?
例:
パッケージio
では、タイプByteReader
はメソッドをラップするインターフェースを定義しますReadByte() (c byte, err error)
。
標準ライブラリ(つまり、golang.org / pkgにリストされている)のどのタイプがこのインターフェイスを満たすかを見つける 最も簡単な方法は何ですか?
これは単なる経験の問題ですか、それとも他の助けがありますか?
主に経験による。とにかく、例えば:
jnml@fsc-r630:~/go/src/pkg$ egrep -nr '^func (.*) ReadByte\(' *
bufio/bufio.go:165:func (b *Reader) ReadByte() (c byte, err error) {
bytes/reader.go:59:func (r *Reader) ReadByte() (b byte, err error) {
bytes/buffer.go:289:func (b *Buffer) ReadByte() (c byte, err error) {
encoding/xml/xml_test.go:234:func (d *downCaser) ReadByte() (c byte, err error) {
strings/reader.go:58:func (r *Reader) ReadByte() (b byte, err error) {
jnml@fsc-r630:~/go/src/pkg$
また、golang.orgサイトには、大文字と小文字を区別する検索機能があります。
単に検索するよりも、これを行うためのより良い方法があります。
Go Oracleには、特定のインターフェースを実装するタイプと、特定のタイプが実装するインターフェースを示す実装クエリがあります。
さらに、同じ機能を提供すると主張するツールは次のとおりです:https ://github.com/dominikh/implements 。
2020年の更新:公式のGo言語サーバーであるgoplsも、このクエリをサポートしています。
➜ gopls implementation -h
display selected identifier's implementation
Usage: implementation [flags] <position>
Example:
$ # 1-indexed location (:line:column or :#offset) of the target identifier
$ gopls implementation helper/helper.go:8:6
$ gopls implementation helper/helper.go:#53