1.结构体定义

  1. - 结构体是由相同或不同类型的数据构成的数据集合
  2. - 格式:type 结构体名称 struct{xxx}
  1. //定义结构体
  2. type User struct{
  3. name string
  4. sex string
  5. age int
  6. }
  7. func main() {
  8. //创建对象方式一
  9. var u User
  10. fmt.Println(u) //结构体中的变量未赋值,值为数据类型的默认值
  11. //给结构体对象赋值
  12. u.name="张三"
  13. u.sex="男"
  14. u.age=18
  15. fmt.Println(u) //{张三 男 18}
  16. fmt.Println(u.name) //获取name的值
  17. //创建对象方式二
  18. u1:=User{}
  19. u1.name="李四"
  20. u1.sex="男"
  21. u1.age=20
  22. fmt.Println(u1) //{李四 男 20}
  23. fmt.Println(u1.name) //获取name的值
  24. //创建对象方式三
  25. u2:=User{
  26. name: "小丽",
  27. sex: "女",
  28. age: 19,
  29. }
  30. fmt.Println(u2) //{小丽 女 19}
  31. fmt.Println(u2.name) //获取name的值
  32. //创建对象方式四,不声明属性,参数需要一一对应
  33. u3:=User{"王五","男",25}
  34. fmt.Println(u3) //{王五 男 25}
  35. fmt.Println(u3.name) //获取name的值
  36. }

2.结构体指针

  1. //定义结构体
  2. type User struct{
  3. name string
  4. sex string
  5. age int
  6. }
  7. func main() {
  8. var u User
  9. u.name="张三"
  10. u.sex="男"
  11. u.age=18
  12. var u1_ptr *User //定义结构体指针
  13. u1_ptr = &u
  14. u1_ptr.name="李四" //通过指针修改属性值
  15. fmt.Println(u.name) //李四
  16. }

3.匿名结构体

  1. - 没有名称的结构体,可以直接在函数内部创建并使用
  1. func main() {
  2. //匿名结构体
  3. s:=struct{
  4. name string
  5. age int
  6. }{
  7. name:"zs",
  8. age: 18,
  9. }
  10. fmt.Println(s.name,s.age)
  11. }

4.结构体嵌套

  1. - 结构体中又有结构体
  1. //定义结构体
  2. type User struct{
  3. name string
  4. sex string
  5. age int
  6. add Address //用结构体作为属性
  7. }
  8. type Address struct{
  9. city,state string
  10. }
  11. func main() {
  12. var u User
  13. u.name="zs"
  14. u.age=18
  15. u.add=Address{
  16. city: "广州",
  17. state: "中国",
  18. }
  19. fmt.Println(u.name)
  20. fmt.Println(u.age)
  21. fmt.Println(u.add.state+ u.add.city)
  22. }

5.结构体访问权限

1.结构体中的名称,如果首字母大写,为公共的,所有地方都可以使用,

2.结构体中的名称,如果首字母小写,为私有的,只有自己可以使用