1、定义
使用type 和struct 关键字来定义结构体,是值类型
格式如下:
type 类型名 struct {
字段名 类型
字段名 类型
...
}
2、实例化
1、var 结构体实例 结构体类型 var p1 Person
2、使用new关键字 var p2 = new(Person)
3、使用&对结构体进行取地址操作 p3:=&Person{}
第二种和第三种返回的是指针类型
4、键值对初始化
p4:= Person {
name :"李四",
}
5、&取内存地址
p5:=&Person{
name :"李四",
}
6、简写 不指名key 直接写value
p6:=&Person{
"张三
"
}
结构体首字母大写表示结构体共有,在其他包里可以使用。首字母小写表示结构体私有,只能在这个包里使用。
在golang中 支持对结构体指针直接使用.来访问结构体的成员 p2.name = "张三",其在底层是(*p2).name="张三"
3、结构体的匿名字段
结构体允许成员字段声明时没有字段名只有类型,这种没有名字的字段叫匿名字段。匿名字段默认采用类型名作为字段名,因此类型不能重复。
type Person {
string
int
}
4、结构体嵌套
当访问结构体成员时会先在结构体中查找该字段,找不到再去匿名结构体中查找、
type User struct {Username stringAge intAddress Address
}
type Address struct {Name stringphone string
}func main() {var u = new(User)u.Username = "张三"u.Age = 20u.Address.Name = "不会"u.Address.phone = "1233"// fmt.Printf("%#v", u)fmt.Println(&u.Address)
}
golang中使用结构体嵌套来实现继承。