funcmain(){
var x Sayer // 声明一个Sayer类型的变量x
a := cat{
}// 实例化一个cat
b := dog{
}// 实例化一个dog
x = a // 可以把cat实例直接赋值给x
x.say()// 喵喵喵
x = b // 可以把dog实例直接赋值给x
x.say()// 汪汪汪}
一个类型实现多个接口
举例:
// Sayer 接口type Sayer interface{
say()}// Mover 接口type Mover interface{
move()}type dog struct{
name string}// 实现Sayer接口func(d dog)say(){
fmt.Printf("%s会叫汪汪汪\n", d.name)}// 实现Mover接口func(d dog)move(){
fmt.Printf("%s会动\n", d.name)}funcmain(){
var x Sayer
var y Mover
var a = dog{
name:"旺财"}
x = a
y = a
x.say()
y.move()}
接口的嵌套
举例:
// Sayer 接口type Sayer interface{
say()}// Mover 接口type Mover interface{
move()}// 接口嵌套type animal interface{
Sayer
Mover
}type cat struct{
name string}func(c cat)say(){
fmt.Println("喵喵喵")}func(c cat)move(){
fmt.Println("猫会动")}funcmain(){
var x animal
x = cat{
name:"花花"}
x.move()
x.say()}