【发布时间】:2021-10-26 09:22:50
【问题描述】:
我目前正在学习 Go 编程语言。
我创建了一个 pop() 函数来从切片中弹出元素。
目前我是这样实现的:
func pop(s []int) (int, []int) {
val := s[len(s)-1]
return val, s[:len(s)-1]
}
func main() {
elem, newSlice := pop([]int{1, 2, 3, 4, 5})
fmt.Printf("Popped: %v\nNew SLice: %v\n", elem, newSlice)
}
这按预期工作,但我想知道是否有一种方法可以引用原始切片并删除元素而无需返回副本。我不确定我是否理解如何将切片的指针传递给函数(我认为它们已经是对底层数组的引用)。是否可以传递对切片的引用并在函数范围内修改原始切片?
【问题讨论】:
-
我试图以这种方式传递它并不断收到无效参数错误。奇怪。
-
@mh-cbon 谢谢你的例子!我试图将它封装到一个 pop() 函数中。