去切片問題,請檢查下面,並評論如果我失去了一些東西。Go Slice - [:n]和[n:]之間的差異
import "fmt"
func main() {
s := []int{2, 3, 5, 7, 11, 13}
s = s[1:]
fmt.Println(s)
s = s[2:]
fmt.Println(s)
s = s[5:]
fmt.Println(s)
}
輸出:上述
[3 5 7 11 13] [7 11 13] panic: runtime error: slice bounds out of range
很有意義。
func main() {
s := []int{2, 3, 5, 7, 11, 13}
s = s[:1]
fmt.Println(s)
s = s[:2]
fmt.Println(s)
s = s[:5]
fmt.Println(s)
}
輸出:
[2] [2 3] [2 3 5 7 11]
如果這還從s = S得到數組出界恐慌[:2]?
我的問題是w.r.t賦值,當我們執行s = s [:n]時,我的思維正在被新片覆蓋,舊片陣列中\ slice實際上已經丟失,不再存在。但相反,我繼續對已經切片並切片的原始數組進行切片,這看起來與Java不同。 –