Struct-two
创建和访问结构体字段
- var person Person
- var person Person = Person{}
- var person *Person = new(Person)
- Var person *Person = &Person{}
1 | package main |
结构体内存分配机制
1 | package main |
- p2有着自己的值,该值就是p1的内存地址
- p2也有着自己的内存地址
结构体使用
- 结构体中的所有字段在内存中是连续的
- 指针本身的地址是连续的,但是指向的地址未必是连续的
1 | package main |
- 结构体是用户自定义的数据类型,结构体的字段名、个数和类型需要完全相同才能转换。
1 | package main |
-
结构体进行
type
重新定义,相当于是取别名,Golang认为是新的数据类型,但是可以强转1
2
3
4
5
6
7
8
9
10
11
12
13type Student struct {
Name string
Age int
}
type Stu Student // 取别名
func main(){
var stu1 Student
var stu2 Stu
stu2 = Stu(stu1) // 强制转换
//stu2 = stu1 报错
fmt.Println(stu1, stu2)
} -
结构体的每个字段写上一个
tag
,通过反射机制进行获取,常见的场景是序列化和反序列化
1 | package main |
4668 3643 45