方式 1-直接声明

案例演示: var person Person

前面我们已经说了。

Ø 方式 2-{}

案例演示: var person Person = Person{}

Ø 方式 3-&

案例: var person *Person = new (Person)

Ø 方式 4-{}

案例: var person *Person = &Person{}

Ø 说明:

1) 第 3 种和第 4 种方式返回的是 结构体指针。

2) 结构体指针访问字段的标准方式应该是:(*结构体指针).字段名 ,比如 (*person).Name = "tom"

3) 但 go 做了一个简化,也支持 结构体指针.字段名, 比如 person.Name = "tom"。更加符合程序员 使用的习惯,go 编译器底层 对 person.Name 做了转化 (*person).Name。

10.1.13 struct 类型的内存分配机制

Ø 看一个思考题

输出的结果是: p2.Name = tom p1.Name = 小明

Ø 基本说明

Ø 结构体在内存中示意图

Ø 看下面代码,并分析原因

输出的结果是:

上面代码对应的内存图的分析:

Ø 看下面代码,并分析原因