在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
}
}
在果朗,我怎么能做同样的事?
type humanPlayer struct {
name string
}
type botPlayer struct {
name string
}
我怎样才能在戈兰实现同样的模式?
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)
}