主题
结构体比较与复制
结构体是值类型,支持直接比较和复制操作。
1. 结构体比较
两个结构体变量可以使用 ==
和 !=
比较,比较所有字段值是否相等。
go
type Person struct {
Name string
Age int
}
p1 := Person{Name: "Alice", Age: 30}
p2 := Person{Name: "Alice", Age: 30}
p3 := Person{Name: "Bob", Age: 25}
fmt.Println(p1 == p2) // true
fmt.Println(p1 == p3) // false
注意:结构体中所有字段都必须是可比较类型,才支持比较。
2. 结构体复制
赋值操作会复制结构体所有字段,互不影响。
go
p1 := Person{Name: "Alice", Age: 30}
p2 := p1
p2.Age = 35
fmt.Println(p1.Age) // 30
fmt.Println(p2.Age) // 35
3. 指针复制
使用结构体指针时,复制的是指针地址,指向同一数据。
go
p1 := &Person{Name: "Alice", Age: 30}
p2 := p1
p2.Age = 40
fmt.Println(p1.Age) // 40
理解结构体比较与复制有助于避免意外的值修改和提高代码安全性。