我正在玩切片以更好地理解行為。我寫了以下代碼:
func main() {
// Initialize
myslice := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
newSlice := myslice
fmt.Println(myslice)
fmt.Println(newSlice)
removeIndex := 3
newSlice = append(newSlice[:removeIndex], newSlice[removeIndex 1:]...)
fmt.Println(myslice)
fmt.Println(newSlice)
}
這是輸出:
[1 2 3 4 5 6 7 8 9]
[1 2 3 4 5 6 7 8 9]
[1 2 3 5 6 7 8 9 9]
[1 2 3 5 6 7 8 9]
我真的不明白newSlice 最后復制 9 會發生什么。另外,這是否意味著此操作會從底層陣列中洗掉給定元素?
https://go.dev/play/p/pf7jKw9YcfL
uj5u.com熱心網友回復:
該append操作只是移動底層陣列的元素。newSlice并且mySlice是具有相同底層陣列的兩個切片。唯一的區別是兩者的長度: After append,newSlice有 8 個元素,mySlice仍然有 9 個元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/438835.html
