NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
### 结构体初始化 ~~~ type Student struct { id int name string age int gender string } func main() { //顺序初始化,每个程序必须初始化 var s1 Student = Student{1, "jack", 20, "男"} fmt.Println(s1) //指定成员初始化,没有初始化的成员为类型的零值 s2 := Student{name: "jack", gender: "男"} fmt.Println(s2) } ~~~ ~~~ {1 jack 20 男} {0 jack 0 男} ~~~ ### 指针变量初始化 ~~~ type Student struct { id int name string age int gender string } func main() { //顺序初始化,每个程序必须初始化 var p1 *Student = &Student{1, "jack", 20, "男"} fmt.Println(p1) //指定成员初始化,没有初始化的成员为类型的零值 p2 := &Student{name: "jack", gender: "男"} fmt.Printf("%T",p2) fmt.Println(*p2) } ~~~ ~~~ &{1 jack 20 男} *main.Student //结构体类型 {0 jack 0 男} ~~~ ### 普通变量 ~~~ type Student struct { id int name string age int gender string } func main() { var s Student s.id = 1 s.name = "jack" //s.age = 20 //s.gender = "男" //未赋值就是零值 fmt.Println(s) } ~~~ ~~~ {1 jack 0 } ~~~ ### 指针变量 ~~~ type Student struct { id int name string age int gender string } func main() { //指针有合法指向后,才能操作成员 //先定义一个普通结构体变量 var s1 Student //定义一个指针变量,保存s的地址 var p1 *Student p1 = &s1 //通过指针操作成员p1.id和(*p1).id完全等价 p1.id = 1 (*p1).name = "jack" fmt.Println(p1) //通过new申请一个结构体 p2 := new(Student) p2.id = 2 p2.name = "milan" fmt.Println(p2) } ~~~ ~~~ &{1 jack 0 } &{2 milan 0 } ~~~