这种用法叫什么? 而且 type B 中无论写成 *A 或者 A,都能跑通,这里有什么区别吗?
谢谢
```
package main
import "fmt"
type A struct {
valA int
}
type InfA interface {
greeting()
}
func (a *A) greeting() {
fmt.Println("Hello, A")
}
type B struct {
*A // or A?
valB int
}
func main() {
a := new(A)
b := new(B)
a.greeting()
b.greeting()
}
```
当你在`B{}`里嵌入`A{}`时,内存布局确实跟继承一样,大概
```
B{
A{}
}
```
,但嵌入的是`*A{}`时就不一样了:
```
B{
*A
}
A{}
```
#4
更多评论
在struct A中声明另一个struct B:官方叫匿名成员变量,说到底还是个变量
那么 B 的实例变量就能调用A的method:实质上是B的实例通过A的匿名变量调用A的方法
无论写成 *A 或者 A,都能跑通:这是因为有自动引用跟自动解引用
#1