英文:
How to return slice by reference?
问题
返回的引用切片是空的:
package main
import "fmt"
func GetItems(items *[]string) {
list := make([]string, 0)
list = append(list, "ok")
items = &list
}
func main() {
var items []string
GetItems(&items)
fmt.Print(len(items)) // 预期结果为1,但实际得到的是0
}
如何通过引用从函数中返回切片?
英文:
The returned slice by reference is empty:
package main
import "fmt"
func GetItems(items *[]string) {
list := make([]string, 0)
list = append(list, "ok")
items = &list
}
func main() {
var items []string
GetItems(&items)
fmt.Print(len(items)) // expect 1 here, but got 0
}
How to return the slice from the function by reference?
答案1
得分: 5
通过将 items
赋值,你改变了 items
指向的位置,而不是 items
指向的值。要改变后者,而不是使用 items = &list
,你应该写成 *items = list
。
英文:
By assigning to items
, you alter where items
points, not the value items
points to. To do the latter, instead of items = &list
write *items = list
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论