结构体
-
结构体是一种数据类型,
type Person struct{
name string
sex byte
age int
}
-
初始化:
- 顺序初始化:依次将结构体内部所有成员初始化,eg:
var man Person = Person{"July",'m',33}
- 指定成员初始化:未初始化的成员变量,取该数据类型对应的默认值。eg:
man : = Person{name:"July",age:33}
- 顺序初始化:依次将结构体内部所有成员初始化,eg:
-
使用:
- 使用“ . ”索引成员变量;
- 结构体之间的比较只能==或!=,不能是>或者<;
- 结构体默认是值传递传参,值拷贝->内存消耗大,效率低。
- 结构体的地址==结构体第一个成员变量地址;从低地址开始分配内存;
- unSafe.Sizeof(变量名)->变量的所占内存空间大小,单位为字节;
-
结构体指针
- 初始化:
- 顺序初始化:依次将结构体内部所有成员初始化:eg:
var man *Person = &Person{"July",'m',33}
- new(结构体名);eg:
new(Person)
- 顺序初始化:依次将结构体内部所有成员初始化:eg:
- 使用:
- 使用“ . ”索引成员变量;
- 结构体指针的值==结构体第一个成员变量地址;
unSafe.Sizeof(指针)
,不管什么类型的指针,在64位操作系统下,大小一致,均为8字节;- 当结构体指针做函数返回值的时候,不能返回局部变量的地址值,可以返回局部变量的值。->局部变量保存在栈帧上,函数调用结束后,栈帧释放。局部变量的地址,不再受系统保护,随时可能分配给其它程序。
- 初始化: