go语言的interface是一种类型,它是一个或多个方法的集合,只要实现了interface中定义的方法,那么就是该interface类型
如: 假如我们定义只要会嘎嘎嘎
叫的鸟都是鸭子
package main
import "fmt"
// 定一个duck的接口类型,内部只要实现gaga即可
type duck interface {
gaga()
}
// 定义一个bird的结构体
type bird struct {
name string
}
// bird结构体的gaga方法
func (b bird) gaga() {
fmt.Printf("%s:嘎嘎嘎", b.name)
}
// 定义一个鸭子叫的函数,参数为duck类型
// 内部调用duck的gaga方法
func duck_say(d duck) {
d.gaga()
}
func main() {
b := bird{name: "鸭子"}
duck_say(b)
}
注意:如果gaga方法是使用*bird(指针接受者)来接受的,那么main函数中的duck_say应该接受b的地址
type people interface {
get_name() string
color(c string) string
}
结构体支持函数参数和返回值的定制
原文:https://www.cnblogs.com/ivy-blogs/p/12655016.html