我对 go 中接口的使用有疑问。我还在学习这门语言,所以如果这是一个愚蠢的问题,请原谅我。
我正在玩一个接受和处理 TCP 连接的小应用程序。因为我想测试业务逻辑而不是网络魔法,所以我试图使用接口保持一点抽象(这样我就可以使用简单的对象模拟 net.Connio.ReadWriteCloser
对象)。
这是我的问题:
type Accepter interface {
Accept() (io.ReadWriteCloser, error)
}
func NewTCPAccepter(address string) (Accepter, error) {
accepter, err := net.Listen("tcp", address)
if err != nil {
return nil, err
}
return accepter, err
}
我看到的错误是:
net.Listener does not implement Accepter (wrong type for Accept method)
have Accept() (net.Conn, error)
want Accept() (io.ReadWriteCloser, error)
我不明白为什么会发生这种情况,因为检查文档和 net lib 源代码,我发现它net.Conn
实际上是在实现io.ReadWriteCloser
.
我的错误是什么?非常感谢!