前言
结构体是众多属性的集合,每个属性都有其类型和值。在对结构体的使用中,结构体的初始化必不可少,本文列举Go中主要的几种初始化方法及示例,最后从内存分配角度分析了其区别。
一、三种主要实例化方法
1. var 声明
type person struct{
age int
name string
}
func main() {
var fan person
fan.age = 10
fan.name = "fan"
}
2.new关键字
方式1:
func main() {
fan := new(person)
fan.name = "fan"
fan.age = 26
}
方式2:
func main() {
fan := &person{
26,"fan"
}
fmt.Println(fan.age)
}
3. 赋值初始化
方式1:
func main() {
fan := person{
name: "fan",
age: 10,
}
}
方式2:
func main() {
fan := person{
"fan",
10,
}
}
方式1和方式2区别:赋值顺序;方式2必须对应结构体定义顺序;
二、内存布局区别
1.var 声明
var p point 为p分配内存,并零值化;
2.new关键字
new返回一个指向Point的指针;
3. 赋值初始化
本文转载自:https://blog.youkuaiyun.com/FANGUOHAO/article/details/108754471