我的問題是關於切片長度和容量。我在這裏學習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