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 回答