在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中实现相同的模式?
答案 0 :(得分:1)
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)
}