pointers - 如何使用指向该 slice 的指针获取 slice 项

标签 pointers go slice

有一个整数 slice 和一个接受指向 slice 的指针作为参数的函数。

mainSlice := []int{0,8,5,4,6,9,7,1,2,3,6,4,5,7}
doSmthWithSlice(mainSlice)

有没有什么方法可以使用指向 slice 的指针来获取 slice 项,但无需将指针指向的值复制到新 slice 中?

func doSmthWithSlice(slcPtr *[]int) {
    *slcPtr[3] = 777 // this does NOT works, because *[]int does not support indexing

    // Don't want to implement it 
    // like this
    newSlice := *slcPtr
    newSlice[3] = 777
    *slcPtr = newSlice
}

谢谢
附言
很抱歉提出这种原始问题。我是新手

最佳答案

操作顺序很重要:您需要先取消引用指针,然后再对其进行索引。

func doSmthWithSlice(slPtr *[]int) {
    (*slcPtr)[3] = 777 
}

没有括号,索引运算符应用于 slice 指针;无效操作。

关于pointers - 如何使用指向该 slice 的指针获取 slice 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42706786/

相关文章:

使用 Go 进行 JSON 解码失败

python - 使用 python 中数组的索引切片二维数组

go - 我可以同时编写不同的 slice 元素吗

c - 凯撒密码和反向文本程序的问题

c - 了解 C 语言中的复杂指针示例代码

go - 通过 html/template 删除传递参数周围的空格

database - golang 数据库/sql 中的死锁

python - 我可以使用 python 切片来访问嵌套元组的一个 "column"吗?

c - 结构体中元素之一的数组初始化

c - C语言中Struct和Pointer的问题