Go 结构体,定义结构体类型,struct

小鱼儿 2022-03-02 04:10 565阅读 0赞

demo.go(定义结构体类型):

  1. package main
  2. import "fmt"
  3. // 定义结构体类型 (在函数外部定义(全局的),可以在整个项目中使用)
  4. type student struct {
  5. id int // 结构体的成员
  6. name string
  7. age int
  8. }
  9. func main() {
  10. // 定义结构体变量 (结构体是一种复合类型)
  11. var stu student
  12. // 为结构体成员赋值
  13. stu.id = 1 // 默认0 (int)
  14. stu.name = "张三" // 默认空串 (string)
  15. stu.age = 20
  16. fmt.Println(stu) // {1 张三 20} 按结构体定义时的成员顺序进行显示。
  17. // 定义结构体变量并赋值 (第二种方式)
  18. var stu2 = student{2,"李四",21} // 按结构体定义时的成员顺序进行赋值
  19. fmt.Println(stu2) // {2 李四 21}
  20. // 定义结构体变量并赋值 (第三种方式)
  21. // stu3 := student{3, "王五", 22} // 按结构体定义时的成员顺序进行赋值
  22. stu3 := student{name:"王五", id:3}
  23. fmt.Println(stu3) // {3 王五 0}
  24. // 结构体的地址
  25. fmt.Printf("%p \n", &stu) // 0xc000004460
  26. fmt.Printf("%p \n", &stu.id) // 0xc000004460 整个结构体的地址就是第一个成员的地址
  27. // 结构体成员在内存中按照定义时的成员顺序进行连续存储。
  28. // 结构体的比较
  29. stu4 := stu3
  30. // 结构体stu3与stu4的地址并不相同,修改其中一个并不会影响另一个。 (结构体作为函数参数是值传递,修改形参不会影响实参)
  31. fmt.Printf("%p \n", &stu3) // 0xc000046480
  32. fmt.Printf("%p \n", &stu4) // 0xc0000464c0
  33. fmt.Println(stu3 == stu4) // true 结构体中的所有成员都相同时两个结构体才相等。 (只支持==和!=的比较)
  34. }

发表评论

表情:
评论列表 (有 0 条评论,565人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C# 结构Struct

    在 C\ 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。 结构体是用来代表一个记录。假设您想跟踪图书馆中书