golang 中的陣列是值型別。在我的理解中,值型別保存的是值,而不是記憶體地址。所以下面的代碼,變數arr不應該改變。但它沒有。我想知道為什么
func main() {
arr := []int{0,0,0}
arr2 := arr
arr[1] = 1
fmt.Println(arr, arr2)
// output [0 1 0] [0 1 0]
// output in thought [0 0 0] [0 1 0]
}
也許這是一個基本問題。但是我找到了一些文章。他們都只是說golang中哪些是參考型別和值型別。但它無法幫助我解決我的問題。
uj5u.com熱心網友回復:
您使用的是切片,而不是陣列。在您的程式中,arr和arr2都是指向同一個陣列的切片。更改它,以便:
arr := [3]int{0,0,0}
然后,arr是一個陣列,它按您的預期作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/373859.html
標籤:走
