Go中无指针数组语法,但可用[]int切片或[3]int数组存储多个变量地址;如ptrs:=[]int{&a,&b,&c},通过ptrs[0]访问修改原值。
在 Go 语言中,没有传统意义上的“指针数组”语法(如 C 中的 int* arr[5]),但可以通过切片或数组来存储多个指针变量,即 元素类型为指针的切片或数组。关键在于:你要存储的是“指向变量的指针”,而不是“指向数组的指针”。下面直接说明如何正确实现存储和访问多个变量地址。
Go 更常用切片而非固定数组,灵活且安全。要存多个 *int,就声明 []*int:
a
, b, c := 10, 20, 30
& 获取它们的地址,放进切片:ptrs := []*int{&a, &b, &c}
ptrs 是一个长度为 3 的切片,每个元素都是 *int 类型拿到指针后,用解引用操作符 * 读写对应变量:
fmt.Println(*ptrs[0]) // 输出 10*ptrs[1] = 999 // 修改 b 的值为 999fmt.Println(b) // 输出 999如果确定数量不变,也可用数组,例如存 4 个 *string:
names := [4]string{"Alice", "Bob", "Cindy", "Dan"}ptrArr := [4]*string{&names[0], &names[1], &names[2], &names[3]}[4]*string{&"hello", &"world"} —— 字面量字符串不可取地址,必须先赋给变量或用 new(string)
以下写法是错误或不必要地复杂:
[2]*int)不能;若用切片,直接声明 []*int 即可