...
初始化匿名成员为接口的结构体,初始化参数需要是指针,ide帮忙解决了,结构体,可以直接调用初始化参数实现的方法,也就是接口内的方法
package main
import "log"
type Bird interface {
Biss()
}
type Lan struct{}
func (l *Lan) Biss() {
log.Println("Lan Biss")
}
type Hus struct {
Bird
}
func main() {
var l Lan = Lan{}
var hus Hus = Hus{&l}
hus.Biss()
l2 := new(Lan)
var hus1 Hus = Hus{l2}
hus1.Biss()
}
...
结构体A内嵌匿名结构体b和c,则A使用b和c初始化后 ,可以直接调用b和c实现的方法
当b c绑定同名函数时,A不能调用该方法,不同名的不收该限制
package main
import "log"
type Bird struct {
Name string
Age int
}
type Dog struct {
Name string
Age int
}
func (b *Bird) Say() {
log.Println("bird say")
}
func (d *Dog) Eat() {
log.Println("Dog eat")
}
type Ani struct {
Bird
Dog
}
func main() {
b := Bird{"bb", 11}
d := Dog{"dd", 11}
a := Ani{b, d}
a.Eat()
}