结构体比较与复制

结构体是值类型,支持直接比较和复制操作。

1. 结构体比较

两个结构体变量可以使用 ==!= 比较,比较所有字段值是否相等。

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. 结构体复制

赋值操作会复制结构体所有字段,互不影响。

p1 := Person{Name: "Alice", Age: 30}
p2 := p1

p2.Age = 35
fmt.Println(p1.Age) // 30
fmt.Println(p2.Age) // 35

3. 指针复制

使用结构体指针时,复制的是指针地址,指向同一数据。

p1 := &Person{Name: "Alice", Age: 30}
p2 := p1
p2.Age = 40
fmt.Println(p1.Age) // 40

理解结构体比较与复制有助于避免意外的值修改和提高代码安全性。