我在工作中讨论了接口名称和方法编号之间的相关性。特别是,关于后缀符号以名称结尾的接口有一条不成文的规则er
。规则说这样的接口应该包含一个方法。
让我们来看一个例子。在标准的 Go 语言库中,有一个Pusher
接口做一件事“推送启动 HTTP/2 服务器推送”。这是它的定义:
type Pusher interface {
Push(target string, opts *PushOptions) error
}
https://golang.org/pkg/net/http/#Pusher
好的例子。但是,一些同事为他的实现进行了辩护,该实现包含两个以上带有er
in name 后缀的方法。主要论点是有标准库的接口违反了这样的规则。他提到了界面ReadCloser
。
看它的定义:
type ReadCloser interface {
Reader
Closer
}
https://golang.org/pkg/io/#ReadCloser
我可以说它的错误假设。接口本身嵌入了另外两个接口。我如何解释?没有违反规则。
你将如何解释这样的案例?