普通变量
//===============结构体变量为普通变量
//1、打印成员
var s1 Student = Student{1, “Luffy”, ‘m’, 18, “EastSea”}
//结果:id = 1, name = Luffy, sex = m, age = 18, addr = EastSea
fmt.Printf(“id = %d, name = %s, sex = %c, age = %d, addr = %s\n”, s1.id, s1.name, s1.sex, s1.age, s1.addr)
//2、成员变量赋值
var s2 Student
s2.id = 2
s2.name = “Sanji”
s2.sex = ‘f’
s2.age = 16
s2.addr = “EastSea”
fmt.Println(s2) //{2 yoyo 102 16 EastSea}
指针变量
//===============结构体变量为指针变量
//3、先分配空间,再赋值
s3 := new(Student)
s3.id = 3
s3.name = “Nami”
fmt.Println(s3) //&{3 Nami 0 0 }
//4、普通变量和指针变量类型打印
var s4 Student = Student{4, “Sanji”, ‘m’, 18, “EastSea”}
fmt.Printf(“s4 = %v, &s4 = %v\n”, s4, &s4) //s4 = {4 Sanji 109 18 sz}, &s4 = &{4 Sanji 109 18 EastSea}
var p *Student = &s4
//p.成员 和(*p).成员 操作是等价的
p.id = 5
(*p).name = “ro”
fmt.Println(p, *p, s4) //&{5 ro 109 18 EastSea} {5 ro 109 18 EastSea} {5 ro 109 18 EastSea}
在Go语言中,普通结构体变量 和 结构体指针变量发访问成员的方法一致。不需要加以区分。