炎炎設(shè)計(jì)
2021-11-29 16:27:37
在 PHP 中我可以創(chuàng)建一個(gè)接口interface Hello { public function bar();}和一些實(shí)現(xiàn)它的類final class Foo implements Hello { public function bar() { // do something }}final class Bar implements Hello { public function bar() { // do something }}然后,我還可以創(chuàng)建一個(gè)接受接口的 NewClass::bar() 方法。final class NewClass { public function bar(Hello $hello) { // do something }}在 Golang 中,我如何做同樣的事情?type humanPlayer struct { name string}type botPlayer struct { name string}如何在 golang 中實(shí)現(xiàn)相同的模式?
1 回答

慕桂英3389331
TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個(gè)贊
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 關(guān)注
- 183 瀏覽
添加回答
舉報(bào)
0/150
提交
取消