指针使用
362字约1分钟
2025-02-03
指针使用
Go 支持 指针, 允许在程序中通过 引用传递 来传递值和数据结构。
示例一
package main
import "fmt"
func main() {
// 声明一个整数变量
var num int = 10
// 声明一个指针变量,指向整数变量的内存地址
var ptr *int = &num
// 打印整数变量的值和内存地址
fmt.Println("Value of num:", num)
fmt.Println("Address of num:", &num)
// 打印指针变量的值(即整数变量的内存地址)
fmt.Println("Address of ptr:", ptr)
fmt.Println("Value of ptr:", *ptr)
// 通过指针修改整数变量的值
*ptr = 20
fmt.Println("New value of num:", num)
}
示例二
package main
import "fmt"
// zeroval 接受一个 int 类型的参数,将参数值设为 0,但不影响原始参数
func zeroval(ival int) {
ival = 0
}
// zeroptr 接受一个 int 类型的指针参数,将该指针指向的值设为 0,会影响原始参数
func zeroptr(iptr *int) {
*iptr = 0
}
func main() {
i := 1
fmt.Println("initial:", i)
zeroval(i) // 传值调用 zeroval 函数,不会改变 i 的值
fmt.Println("zeroval:", i)
zeroptr(&i) // 传指针调用 zeroptr 函数,会改变 i 的值。通过 &i 语法来取得 i 的内存地址,即指向 i 的指针。
fmt.Println("zeroptr:", i)
fmt.Println("pointer:", &i) // 打印变量 i 的地址
}
我们只需要知道
&是取地址,*是解引用,去这个地址指向的值