go中的鸭子类型
鸭子类型的主要思想:将结构体看成一个类
接口interface:只要一个变量,含有接口类型中的所有方法,那么这个变量就实现这个接口
package main
import "fmt"
//定义一个结构体player
type Player struct {
id int
name string
}
//只要一个变量,含有接口类型中的所有方法,那么这个变量就实现这个接口
type PlayerFunc interface {
GetId() int
GetName() string
}
//结构体的方法GetId()
func (p *Player) GetId() int {
return p.id
}
//结构体方法GetName()
func (p *Player) GetName() string {
return p.name
}
//这里相当于初始化一个结构体类
func NewPlayer(id int, name string) *Player {
return &Player{
id: id,
name: name,
}
}
//主函数
func main() {
player := NewPlayer(1, "张三")
fmt.Println(player.GetId(), player.GetName())
player2 := NewPlayer(2, "李四")
fmt.Println(player2.GetId(), player2.GetName())
}