19

例:

パッケージioでは、タイプByteReaderはメソッドをラップするインターフェースを定義しますReadByte() (c byte, err error)

標準ライブラリ(つまり、golang.org / pkgにリストされている)のどのタイプがこのインターフェイスを満たすかを見つける 最も簡単な方法は何ですか?

これは単なる経験の問題ですか、それとも他の助けがありますか?

4

2 に答える 2

18

主に経験による。とにかく、例えば:

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サイトには、大文字と小文字を区別する検索機能があります。

于 2013-01-29T07:10:51.010 に答える
11

単に検索するよりも、これを行うためのより良い方法があります。

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
于 2015-01-12T17:10:13.443 に答える