1. 程式人生 > 其它 >Golang的 for 遍歷臨時變數

Golang的 for 遍歷臨時變數

問題描述   當我們對for迴圈中的遍歷的item進行修改時,這個修改是不生效的。
package main

import "fmt"

func main() {
    arr := []int{1, 2, 3, 4, 5, 6}
    fmt.Println("修改前,arr=", arr)
    // for迴圈遍歷中修改,a是臨時變數,修改後arr不變
    for _, item := range arr {
        if item == 3 {
            item = 33
        }
    }
    fmt.Println("第一次修改後,arr=", arr)
}

 

如果我們執行以上的程式碼,程式輸出如下   但是如果我們確實需要對遍歷的陣列進行修改時,我們可以直接根據陣列的下標對其進行修改  
package main
import "fmt"
func main() {
    arr := []int{1, 2, 3, 4, 5, 6}
    fmt.Println("修改前,arr=", arr)
    // for迴圈遍歷中修改,通過下標進行修改是可以的
    for index, a := range arr {
        if a == 3 {
            arr[index] = 33
        }
    }
    fmt.Println("第二次修改後,arr=", arr)
}

 

程式會產生以下輸出,我們可以看到陣列被成功修改了。   總結 1. for迴圈中,遍歷變數是臨時變數,修改不影響原始變數 2. for迴圈中如果想修改原始變數,可以直接修改原始變數本身才行