按照惯例,单方法接口由方法名称加号命名 用于构造代理名词的-er后缀或类似修改:
Reader
,Writer
,Formatter
,CloseNotifier
等。
bufio.io
包中包含:
// Reader implements buffering for an io.Reader object.
type Reader struct {
buf []byte
rd io.Reader
r, w int
err error
lastByte int
lastRuneSize int
}
是否具有名为“* er”的结构的惯用语?特别是在这种情况下,它是一个struct
,其名称与io.Reader
相同,是一个接口。
答案 0 :(得分:2)
如果它不是有效的Go或规格,那么它确实是一个意见问题,只要它有意义,我就说它很好。
以bufio.Reader
或bytes.Reader
为例,以这种方式命名是完全合理的。
答案 1 :(得分:2)
评论type bufio.Reader struct
很重要:
// Reader
实现了io.Reader
对象的缓冲。
包裹
io.Reader
或io.Writer
个对象,创建另一个对象(Reader
或Writer
)还实现了接口,但为文本I / O提供了缓冲和一些帮助。
由于bufio.Reader
不是要添加任何新服务,而只是以缓冲方式实现io.Reader
,因此保留名称并实现函数是有意义的:a {{ 1}}就够了。
从用户的角度来看,只要需要io.Reader,他/她就可以使用struct
。