Golang中如何解引用指向切片的指针
Golang中如何解引用指向切片的指针 我有以下代码片段:
package main
type test struct {
arr *[]int
val int
}
func main() {
a := test{arr: &[]int{1, 2, 3, 4, 5}, val: 21}
*(a.arr)[2] = 656
}
并且我遇到了以下错误:
./4.go:13:10: invalid operation: a.arr[2] (type *[]int does not support indexing)
我无法理解,如何解引用这个切片指针来修改其值。
更多关于Golang中如何解引用指向切片的指针的实战教程也可以访问 https://www.itying.com/category-94-b0.html
2 回复
更多关于Golang中如何解引用指向切片的指针的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
要解引用指向切片的指针并修改元素值,需要先解引用指针获取切片,然后进行索引操作。以下是正确的写法:
package main
type test struct {
arr *[]int
val int
}
func main() {
a := test{arr: &[]int{1, 2, 3, 4, 5}, val: 21}
// 方法1:先解引用指针,再索引
(*a.arr)[2] = 656
// 方法2:使用临时变量
slice := *a.arr
slice[2] = 656
// 验证修改结果
println((*a.arr)[2]) // 输出: 656
}
错误信息表明 a.arr 是 *[]int 类型,不能直接索引。需要先用 * 解引用获取切片值 []int,然后才能进行索引操作 [2]。
括号的位置很重要:(*a.arr)[2] 而不是 *(a.arr)[2],因为索引操作 [2] 的优先级高于解引用操作 *。

