了解切片上的Append() 行為
在Go 中使用切片時,了解Append() 函數如何與切片互動非常重要按值傳遞的切片。
考慮以下程式碼片段:
func main() { slice := make([]int, 10, 10) slice[0] = 0 slice[1] = 1 slice1 := slice slice1[0] = 10000 fmt.Println(slice) slice1 = append(slice1, 100) slice1[0] = 20000 fmt.Println(slice) }
在此範例中,建立了兩個切片(slice 和 slice1),其中 slice1 最初指向與 slice 相同的陣列。然而,在第一次append()呼叫之後,slice1被指派了一個指向不同陣列的新切片值。此賦值導致 slice1 的行為獨立於 slice。
解釋:
結果:
要了解切片標頭及其內部結構,請參閱以下資源:
以上是當按值傳遞時,Go 的 `append()` 函數如何影響切片行為?的詳細內容。更多資訊請關注PHP中文網其他相關文章!