go的[]T(nil)是什么意思?

我是go初学者,最近感到go的语法很奇怪,在网上看到这两种写法很懵逼:

// a 和 b都是切片
b = append([]T(nil), a...)
b = append(a[:0:0], a...)

请问:
1. 这个[]T(nil)后面这个(nil)是怎么个意思?
2. a[:0:0]是怎么个意思?

望各位不腻赐教。

阅读 1.9k
2 个回答

append([]T(nil), a...) 的意思应该是可以往一个字面量的切片中追加元素,其中的nil应该是底层的数据空间为开辟,append函数会自动开辟空间,这里应该用变量接收一下返回值。

append(a[:0:0], a...) 前面的[start_index:stop_index:cap]在golang中可以用来截取切片,cap可以省略,即在一个旧切片的基础上截取新的切片然后往新切片中追加元素,期间可能会触发扩容,

切片和数组语法, 下面的应该是 a[0:0] 吧.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题