Go 语言指针学习笔记
概述
在 Go 中,指针是一种非常重要的数据类型,它也是实现一些高级特性的必备工具。指针通常被用来在函数之间传递数据或者在代码中共享数据。本文将介绍指针的基本概念,以及如何在 Go 中使用指针。
基本概念
指针是一个变量,它存储了另一个变量的地址。在 Go 中,我们使用 *
符号来声明一个指针,例如:
goCopy Codevar ptr *int
这里我们声明了一个名为 ptr
的指针,它指向了一个整型变量。我们可以通过取地址符 &
来获取变量的地址:
goCopy Codevar num int = 10
ptr := &num
fmt.Println("num 的地址是:", ptr)
使用指针
使用指针的主要目的是共享变量。如果我们想要在一个函数中修改一个变量,并且希望这个变量的值在其他函数中也能被修改,那么我们就需要使用指针。下面是一个例子:
goCopy Codefunc main() {
var num int = 10
fmt.Println("原始值:", num)
changeNum(&num)
fmt.Println("修改后的值:", num)
}
func changeNum(ptr *int) {
*ptr = 20
}
在这个例子中,我们定义了一个 changeNum
函数,并使用指针作为参数。在 main
函数中,我们创建了一个整型变量 num
并将它的地址传递给 changeNum
函数。changeNum
函数通过解引用指针来修改变量的值,这样 main
函数中的 num
变量也会被修改。
实例
下面是一个更具体的例子,展示了如何使用指针来交换两个变量的值:
goCopy Codefunc main() {
var a, b int = 1, 2
fmt.Println("交换前:a =", a, ", b =", b)
swap(&a, &b)
fmt.Println("交换后:a =", a, ", b =", b)
}
func swap(x *int, y *int) {
temp := *x
*x = *y
*y = temp
}
在这个例子中,我们定义了一个 swap
函数,并使用指针作为参数。在 main
函数中,我们创建了两个整型变量 a
和 b
,并将它们的地址分别传递给 swap
函数。swap
函数通过解引用指针来交换变量的值,这样 main
函数中的 a
和 b
变量也会被交换。
结论
指针是一种非常重要的数据类型,它可以帮助我们在不同函数之间共享变量。在使用指针时,需要注意解引用指针和获取指针地址的方式。在实际编程中,指针常被用来实现高级特性,例如动态数据结构和接口。