GoLang:创建一个接受接口的函数(我来自PHP)

时间:2015-12-16 00:22:13

标签: php go

在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 个答案:

答案 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)
}