为了账号安全,请及时绑定邮箱和手机立即绑定

Go中的切片存储参考

Go中的切片存储参考

Go
拉风的咖菲猫 2021-05-14 18:19:29
在Go库源代码中,您通常会看到通过创建新的切片存储引用来传递切片,如下所示method(s[:])与仅通过原始切片相比,此方法有什么好处?method(s)
查看完整描述

2 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

s[:]构造通常仅用于创建引用现有数组的新切片,而不用于“传递原始切片”。

ifs[:]确实在stdlib中的某个地方使用,并且s是一个切片,因此它可能是例如重构剩余物。如果您在Go问题追踪器上认识您,请报告该地点。


查看完整回答
反对 回复 2021-05-24
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

唯一会看到这样的代码的情况是s是一个数组,并且您希望将其作为参数传递给以切片为输入的函数。采取以下代码。


package main

func 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是完全不同的类型。


查看完整回答
反对 回复 2021-05-24
  • 2 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信