版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
结构体
结构体的概念
很多时候,我们想要自定义一个能放很多各种不同数据结构的结构体,这个就像C一样,叫做struct
就像是比如一张数据库表,比如学生表
而里面的元素,比如name,就是结构体中的成员
//定义一个结构体
type Student struct {
//这个属性是一个成员
id int
name string
sex byte
age int
addr string
}
结构体普通变量的初始化
//定义一个结构体
type Student struct {
id int
name string
sex byte
age int
addr string
}
func main(){
//初始化的时候,每个元素都必须初始化
var s1 Student = Student{1,"mike",'m',18,"bj"}
//指定成员初始化,没有初始化的成员,自动赋值成0
s2 := Student{name: "mike", addr: "bj"}
}
结构体的指针变量初始化
//定义一个结构体
type Student struct {
id int
name string
sex byte
age int
addr string
}
func main(){
//初始化的时候,每个元素都必须初始化,&符号不要忘了
var p1 *Student = &Student{1,"mike",'m',18,"bj"}
//指定成员初始化,没有初始化的成员,自动赋值成0
p2 := &Student{name: "mike", addr: "bj"}
}
结构体操作成员变量
//定义一个结构体
type Student struct {
id int
name string
sex byte
age int
addr string
}
func main(){
//定义一个结构体普通变量
var s student
//操作成员,需要使用(.)运算符
s.id = 1
s.name = "mike"
s.age = 18
}
结构体操作成员变量的指针
//定义一个结构体
type Student struct {
id int
name string
sex byte
age int
addr string
}
func main(){
//定义一个结构体普通变量
var s student
var p1 *student
p1 = &s
//通过指针操作成员 p1.id和 (*p1).id是等价的
//所以我们通常直接使用第一种
p1.id = 1
(*p1).name = "mike"
//也可以通过new来获取一个结构体实例
p2 := new(Student)
p2.id = 1
p2.name
...
}
结构体的比较
//定义一个结构体
type Student struct {
id int
name string
sex byte
age int
addr string
}
func main(){
s1 := Student(1,"mike",'m',18,"123")
s2 := Student(1,"mike",'m',18,"123")
println(s1==s2)
}