Golang基础-十、结构体-《Golang,Go,Go,Go学习笔记》

admin 2026-03-24 10:12:10 编程 来源:ZONE.CI 全球网 0 阅读模式
  • 1.结构体定义
  • 2.结构体指针
  • 3.匿名结构体
  • 4.结构体嵌套
  • 5.结构体访问权限

    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.结构体中的名称,如果首字母小写,为私有的,只有自己可以使用

    评论:0   参与:  0