英文:
How to get slice item using pointer to that slice
问题
有一个整数切片和一个接受指向切片的指针作为参数的函数。
mainSlice := []int{0,8,5,4,6,9,7,1,2,3,6,4,5,7}
doSmthWithSlice(&mainSlice)
有没有办法使用指向切片的指针获取切片项,但不将指针指向的值复制到新的切片中?
func doSmthWithSlice(slcPtr *[]int) {
(*slcPtr)[3] = 777 // 这样是不行的,因为*[]int不支持索引
// 不想这样实现
newSlice := *slcPtr
newSlice[3] = 777
*slcPtr = newSlice
}
谢谢
附言
对于提出这种原始问题我感到抱歉。我是Go语言的新手
英文:
Have a slice of ints and a function that accepts a pointer to a slice as a parameter.
mainSlice := []int{0,8,5,4,6,9,7,1,2,3,6,4,5,7}
doSmthWithSlice(mainSlice)
Is there any ways to get the slice item using the pointer to the slice, but without copying the value that the pointer points into new 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
}
Thank you
P.S.
Sorry for asking this kind of primitive question. I'm new in go
答案1
得分: 2
运算的顺序很重要:你需要先解引用指针,然后再对其进行索引。
func doSmthWithSlice(slPtr *[]int) {
(*slcPtr)[3] = 777
}
如果没有括号,索引操作符会应用于切片指针,这是一个无效的操作。
英文:
The order of operations matter: you need to first dereference the pointer, and then index it.
func doSmthWithSlice(slPtr *[]int) {
(*slcPtr)[3] = 777
}
Without the parentheses, the index operator is applies to the slice pointer; an invalid operation.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论