Go 切片语法解析:展开运算符和切片复制的具体用法是什么?
go 切片语法解析
在 go 语言中,切片是一种动态大小的数组,可以存放相同类型的数据。通过切片语法,开发者可以轻松地创建、操作和修改切片。
本问答文章将重点介绍两个重要的切片语法规则:
s = append(s, q[3:]...)
在上述代码中,q[3:]... 是一个切片展开运算符。它表示将从索引 3 开始到切片末尾的所有元素展开成一个独立的切片,然后将其追加到 s 切片的末尾。换句话说,它相当于以下代码:
s = append(s, q[3:len(q)]...)
2. 切片复制
s = append(s[:1], s[2:]...)
在上述代码中,append(s[:1], s[2:]...) 操作将 s 切片分成两个子切片:s[:1] 和 s[2:]。
- s[:1] 创建一个新的切片,其底层数组与 s 共享,起始索引为 0,长度为 1。
- s[2:] 创建一个新的切片,其底层数组与 s 共享,起始索引为 2,长度为 len(s) - 2。
然后,该操作将 s[:1] 和 s[2:] 合并为一个新的切片,并将其赋值给 s。因此,s 切片现在变成具有相同底层数组但起始索引和长度不同的一个新切片。