interface


接口定义,指定方法集。 如果一个类型的方法集是接口方法集的超集,就称该类型实现了该接口。所有类型实现了空接口interface{},未初始化的interface变量的值为nil。
interface.go

package main
import "fmt"
  
type animal interface {
    run()
}
  
type dog struct{}
type cat struct{}
  
func (d dog) run() {
    fmt.Printf(" dog run \n")
}
  
func (c cat) run() {
    fmt.Printf(" cat run \n")
}
  
func beginRun(a animal) {
    a.run()
}
  
func main() {
    d := dog{};
    c := cat{};
    beginRun(d);
    beginRun(c);
}


go keyword interface