我是go初学者,最近感到go的语法很奇怪,在网上看到这两种写法很懵逼:
// a 和 b都是切片
b = append([]T(nil), a...)
b = append(a[:0:0], a...)
请问:
1. 这个[]T(nil)
后面这个(nil)
是怎么个意思?
2. a[:0:0]
是怎么个意思?
望各位不腻赐教。
我是go初学者,最近感到go的语法很奇怪,在网上看到这两种写法很懵逼:
// a 和 b都是切片
b = append([]T(nil), a...)
b = append(a[:0:0], a...)
请问:
1. 这个[]T(nil)
后面这个(nil)
是怎么个意思?
2. a[:0:0]
是怎么个意思?
望各位不腻赐教。
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答2.2k 阅读
1 回答2.1k 阅读
1 回答1.5k 阅读
append([]T(nil), a...) 的意思应该是可以往一个字面量的切片中追加元素,其中的nil应该是底层的数据空间为开辟,append函数会自动开辟空间,这里应该用变量接收一下返回值。
append(a[:0:0], a...) 前面的[start_index:stop_index:cap]在golang中可以用来截取切片,cap可以省略,即在一个旧切片的基础上截取新的切片然后往新切片中追加元素,期间可能会触发扩容,