package main
import "fmt"
// 定义结构体类型 (在函数外部定义(全局的),可以在整个项目中使用)
type student struct {
id int // 结构体的成员
name string
age int
}
func main() {
// 定义结构体变量 (结构体是一种复合类型)
var stu student
// 为结构体成员赋值
stu.id = 1 // 默认0 (int)
stu.name = "张三" // 默认空串 (string)
stu.age = 20
fmt.Println(stu) // {1 张三 20} 按结构体定义时的成员顺序进行显示。
// 定义结构体变量并赋值 (第二种方式)
var stu2 = student{2,"李四",21} // 按结构体定义时的成员顺序进行赋值
fmt.Println(stu2) // {2 李四 21}
// 定义结构体变量并赋值 (第三种方式)
// stu3 := student{3, "王五", 22} // 按结构体定义时的成员顺序进行赋值
stu3 := student{name:"王五", id:3}
fmt.Println(stu3) // {3 王五 0}
// 结构体的地址
fmt.Printf("%p \n", &stu) // 0xc000004460
fmt.Printf("%p \n", &stu.id) // 0xc000004460 整个结构体的地址就是第一个成员的地址
// 结构体成员在内存中按照定义时的成员顺序进行连续存储。
// 结构体的比较
stu4 := stu3
// 结构体stu3与stu4的地址并不相同,修改其中一个并不会影响另一个。 (结构体作为函数参数是值传递,修改形参不会影响实参)
fmt.Printf("%p \n", &stu3) // 0xc000046480
fmt.Printf("%p \n", &stu4) // 0xc0000464c0
fmt.Println(stu3 == stu4) // true 结构体中的所有成员都相同时两个结构体才相等。 (只支持==和!=的比较)
}
Go 结构体,定义结构体类型
最新推荐文章于 2025-05-25 08:06:35 发布
本文详细介绍了如何在Python中使用结构体(student struct)进行数据组织,包括全局定义、变量声明与赋值,以及内存布局和比较。通过实例展示了不同方式创建和操作结构体,并探讨了结构体地址和成员访问的特性。
1936

被折叠的 条评论
为什么被折叠?



