发布时间:2024-12-23 03:23:14
func swap(x *int, y *int) {
tmp := *x
*x = *y
*y = tmp
}
func main() {
a, b := 10, 20
swap(&a, &b)
fmt.Println(a, b) // 输出 20, 10
}
在上述示例中,函数 swap 接受两个指向整数的指针作为参数。通过取指针的值来访问变量,可以直接修改原始变量的值。
func inc(x *int) {
*x++
}
func main() {
num := 10
inc(&num) // 通过引用传递递增 num 的值
fmt.Println(num) // 输出 11
}
在这里,函数 inc 接受一个指向整数的指针作为参数,并通过引用递增该指针指向的值。这样可以避免复制整个整数,并改变原始值。
type Point struct {
x int
y int
}
func updateX(p *Point, newX int) {
p.x = newX
}
func main() {
point := &Point{1, 2}
updateX(point, 10)
fmt.Println(point.x, point.y) // 输出 10, 2
}
而对于只需要读取结构体字段值的函数,使用值引用更加安全。这可以避免在函数内部意外地修改结构体字段的值。