结构体:可以封装多个基本数据类型为一个整体,生成一个新的类型
-1.结构体的定义规则
类型名:标识自定义结构体的名称,在同一个包内不能重复。
字段名:表示结构体字段名。结构体中的字段名必须唯一。
字段类型:表示结构体字段的具体类型。
-2.声明一个标准的结构体
//定义一个简单的结构体
type 类型名 struct {
字段名 字段类型
字段名 字段类型
}
//定义结构体
type Person struct {
name string
age int
city string
}
//定义结构体
type Person1 struct {
name, city string //类型一致
age int
}
func main() {
var p Person//结构体实例
p.city = "fasdfa"//结构体变量赋值
p.age = 333//结构体变量赋值
fmt.Println(p)//{ 333 fasdfa}
fmt.Printf("p=%#v\n", p)//p=main.Person{name:"", age:333, city:"fasdfa"}
}
-3.声明一个匿名的结构体
var user struct{
name string
age int
}
user.name = "lwl"
user.age = 20
//结构体的初始化
type person struct {
name string
city string
age int8
}
func main() {
var p4 person
fmt.Printf("p4=%#v\n", p4) //p4=main.person{name:"", city:"", age:0}
}
//使用键值对初始化
p5 := person{
name: "小王子",
city: "北京",
age: 18,
}
fmt.Printf("p5=%#v\n", p5) //p5=main.person{name:"小王子", city:"北京", age:18}
//结构体指针进行键值对初始化
p6 := &person{
name: "小王子",
city: "北京",
age: 18,
}
fmt.Printf("p6=%#v\n", p6) //p6=&main.person{name:"小王子", city:"北京", age:18}