1.结构体定义
- 结构体是由相同或不同类型的数据构成的数据集合- 格式:type 结构体名称 struct{xxx}
//定义结构体type User struct{name stringsex stringage int}func main() {//创建对象方式一var u Userfmt.Println(u) //结构体中的变量未赋值,值为数据类型的默认值//给结构体对象赋值u.name="张三"u.sex="男"u.age=18fmt.Println(u) //{张三 男 18}fmt.Println(u.name) //获取name的值//创建对象方式二u1:=User{}u1.name="李四"u1.sex="男"u1.age=20fmt.Println(u1) //{李四 男 20}fmt.Println(u1.name) //获取name的值//创建对象方式三u2:=User{name: "小丽",sex: "女",age: 19,}fmt.Println(u2) //{小丽 女 19}fmt.Println(u2.name) //获取name的值//创建对象方式四,不声明属性,参数需要一一对应u3:=User{"王五","男",25}fmt.Println(u3) //{王五 男 25}fmt.Println(u3.name) //获取name的值}
2.结构体指针
//定义结构体type User struct{name stringsex stringage int}func main() {var u Useru.name="张三"u.sex="男"u.age=18var u1_ptr *User //定义结构体指针u1_ptr = &uu1_ptr.name="李四" //通过指针修改属性值fmt.Println(u.name) //李四}
3.匿名结构体
- 没有名称的结构体,可以直接在函数内部创建并使用
func main() {//匿名结构体s:=struct{name stringage int}{name:"zs",age: 18,}fmt.Println(s.name,s.age)}
4.结构体嵌套
- 结构体中又有结构体
//定义结构体type User struct{name stringsex stringage intadd Address //用结构体作为属性}type Address struct{city,state string}func main() {var u Useru.name="zs"u.age=18u.add=Address{city: "广州",state: "中国",}fmt.Println(u.name)fmt.Println(u.age)fmt.Println(u.add.state+ u.add.city)}
5.结构体访问权限
1.结构体中的名称,如果首字母大写,为公共的,所有地方都可以使用,
2.结构体中的名称,如果首字母小写,为私有的,只有自己可以使用
