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] 的优先级高于解引用操作 *

回到顶部