猿问

Go中的切片存储参考

在Go库源代码中,您通常会看到通过创建新的切片存储引用来传递切片,如下所示

method(s[:])

与仅通过原始切片相比,此方法有什么好处?

method(s)


拉风的咖菲猫
浏览 225回答 2
2回答

猛跑小猪

该s[:]构造通常仅用于创建引用现有数组的新切片,而不用于“传递原始切片”。ifs[:]确实在stdlib中的某个地方使用,并且s是一个切片,因此它可能是例如重构剩余物。如果您在Go问题追踪器上认识您,请报告该地点。

一只名叫tom的猫

唯一会看到这样的代码的情况是s是一个数组,并且您希望将其作为参数传递给以切片为输入的函数。采取以下代码。package mainfunc main() {    x := [...]int{1, 2, 3, 4, 5}    someFunction(x)   // type mismatch error : expecting [] int, passed [5] int     someFunction(x[:])// no error   }func someFunction(input []int){    // use input }这里要注意的是[] int和[5] int是完全不同的类型。
随时随地看视频慕课网APP

相关分类

Go
我要回答