在 PHP 中我可以创建一个接口interface Hello { public function bar();}和一些实现它的类final class Foo implements Hello { public function bar() { // do something }}final class Bar implements Hello { public function bar() { // do something }}然后,我还可以创建一个接受接口的 NewClass::bar() 方法。final class NewClass { public function bar(Hello $hello) { // do something }}在 Golang 中,我如何做同样的事情?type humanPlayer struct { name string}type botPlayer struct { name string}如何在 golang 中实现相同的模式?
1 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
package main
import (
"fmt"
)
type Namer interface {
Name() string
}
type humanPlayer struct {
name string
}
func (h *humanPlayer) Name() string {
return h.name
}
type botPlayer struct {
name string
}
func (b *botPlayer) Name() string {
return b.name
}
func sayName(n Namer) {
fmt.Printf("Hello %s\n", n.Name())
}
func main() {
human := &humanPlayer{
name: "bob",
}
bot := &botPlayer{
name: "tom",
}
sayName(human)
sayName(bot)
}
- 1 回答
- 0 关注
- 157 浏览
添加回答
举报
0/150
提交
取消