關於go語言中range值拷貝理解

 

 

package main

import (
	"fmt"
)

func test_range_val_copy() {
	a := []int{1, 2, 3, 4}

    // 下面使用的v是一個臨時變量
    // 相當於 var v int
    // 這時臨時變理v的地址是固定下來了,每次v的值在變,但是&v的地址是不變的
    // 最後&v會指向數組最後一個元素,所以在使用range循環的時候,一定注意是值拷貝

	for i, v := range a {
		fmt.Println(&v, &a[i])
	}
}

func main() {
	test_range_val_copy()
}

運行結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章