Go 一个接口定义中有多个方法可以吗?

Go 一个接口定义中有多个方法可以吗?,go,Go,在go中构建接口时,常见示例如下所示: type Notifier interface { Notify() } 医生会说一些像。。。将动词的“er”版本添加到类型名称中。现在,由于方法名和接口名相似,因此在定义中使用多个方法是没有意义的 我正在努力: type Commander interface { Command() Notify() } 它以你所期望的所有奇怪的方式工作,但它似乎是错误的,没有任何东西阻止我这样做。我只是不确定我是否应该链接这些命令,以及在代

在go中构建接口时,常见示例如下所示:

type Notifier interface {
    Notify()
}
医生会说一些像。。。将动词的“er”版本添加到类型名称中。现在,由于方法名和接口名相似,因此在定义中使用多个方法是没有意义的

我正在努力:

type Commander interface {
    Command()
    Notify()
}
它以你所期望的所有奇怪的方式工作,但它似乎是错误的,没有任何东西阻止我这样做。我只是不确定我是否应该链接这些命令,以及在代码的更深处会是什么样子

type Commander interface {
    Command()
}

type Notifier interface {
    Notify()
}
但是调用我的函数的想法:

DoStuff(c, n)
func DoStuff(cn CommandNotifier) {
    // TODO - do stuff
}

当实现两个接口的单个参数也有意义时。

这很好,它也会出现在标准库中的一些地方(例如)


它们应该在一个接口中还是在两个接口中,这取决于让一个类型实现一个接口而不是另一个接口是否有意义或是否有用。

这很好,它也显示在标准库中的一些地方(例如)


它们是在一个接口中还是在两个接口中,取决于让一个类型实现一个接口而不是另一个接口是否有意义或是否有用。

一种方法是像标准库中的
ReadWriter
那样执行

定义一个接口:

type Commander interface {
    Command()
}
另一方面:

type Notifier interface {
    Notify()
}
然后选择要作为参数的类型:

type CommandNotifier interface {
    Commander
    Notifier
}
最后定义您的功能:

DoStuff(c, n)
func DoStuff(cn CommandNotifier) {
    // TODO - do stuff
}

一种方法是像标准库中的
ReadWriter
案例那样进行操作

定义一个接口:

type Commander interface {
    Command()
}
另一方面:

type Notifier interface {
    Notify()
}
然后选择要作为参数的类型:

type CommandNotifier interface {
    Commander
    Notifier
}
最后定义您的功能:

DoStuff(c, n)
func DoStuff(cn CommandNotifier) {
    // TODO - do stuff
}

考虑阅读,让自己熟悉好的风格。我在GopHeNFF看演讲人,留下的印象是,在界面中有多种方法是不习惯的。博客goinggo为我纠正了这一点,因为我最初写了这个问题。所以现在我在寻找惯用的方法。考虑阅读,让自己熟悉好的风格。我在GopHeNFF上看演讲者,留下的印象是,在界面中有多种方法是不习惯的。博客goinggo为我纠正了这一点,因为我最初写了这个问题。所以现在我在寻找惯用的方法。