我的问题是关于切片长度和容量。我在这里学习Go:https://tour.golang.org/moretypes/11。降低切片容量
(我的问题被标记为的this可能重复的;然而,这不是的情况下我的问题是特别关于切断的切片的前几个元素与该影响)
当s = s[:4]
和s = s[:0]
不行时,为什么行s = s[2:]
减少了容量?我看到的唯一区别是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)
}
单击运行按钮后,我们得到以下内容。
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]
的可能的复制(HTTP:// stackoverflow.com/questions/36683911/go-slices-capacity-length)(回答:“容量将是直到最后一个bac的第一个元素国王阵列“) – kennytm
可能的重复[是否没有真正的方法来缩小切片?这是一个问题吗?](http://stackoverflow.com/questions/16748330/does-go-have-no-real-way-to-shrink-a-slice-is-that-an-issue) – Flimzy