结构体比较与复制
结构体是值类型,支持直接比较和复制操作。
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
理解结构体比较与复制有助于避免意外的值修改和提高代码安全性。
相关内容
- 什么是 Go Go 是由 Google 开发的一种开源编程语言,以简洁、高效、并发编程支持强著称,广泛应用于后端开发、云原生和微服务等领域。
- Go 的特点与适用场景 Go 语言以高并发、快速编译、简洁语法和强大标准库著称,适用于构建高性能网络服务、微服务架构和云原生应用。
- 安装 Go(Windows/Linux/macOS) 本节介绍如何在 Windows、Linux 和 macOS 上安装 Go 语言开发环境,包含安装步骤、验证方法及常见注意事项。
- 设置环境变量 本节介绍如何为 Go 语言配置环境变量,包括 GOPATH、GOROOT、PATH 等关键变量,适用于 Windows、Linux 和 macOS 系统。
- 第一个 Go 程序(Hello World) 本节将带你编写第一个 Go 程序“Hello, World”,帮助你快速了解 Go 的基础语法和程序结构。
- Go Modules 简介 本节介绍 Go Modules 的基本概念与用法,它是 Go 官方推荐的依赖管理方式,支持版本控制、依赖隔离和构建一致性。