我的问题是关于切片长度和容量.我正在学习Go Here:https://tour.golang.org/moretypes/11.
(我的问题被标记为可能与this重复;然而,情况并非如此.我的问题具体是关于切掉切片的前几个元素以及这一点的影响.)
为什么线路s = s[2:]
降低了运力,而s = s[:4]
和s = s[:0]
没有呢?我看到的唯一区别是s = s[2:]
的冒号前面有一个数字,而另外两行冒号后面有一个数字.
有没有办法恢复我们用s = s[2:]
切断的前两个元素?
package main
import "fmt"
func main() {
s := []int{2, 3, 5, 7, 11, 13}
printSlice(s)
// Slice the slice to give it zero length.
s = s[:0]
printSlice(s)
// Extend its length.
s = s[:4]
printSlice(s)
// Drop its first two values.
s = s[2:]
printSlice(s)
}
func printSlice(s []int) {
fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s)
}
单击Run按钮后,我们将看到以下内容.
len=6 cap=6 [2 3 5 7 11 13]
len=0 cap=6 []
len=4 cap=6 [2 3 5 7]
len=2 cap=4 [5 7]