Golang的 for 遍歷臨時變數
阿新 • • 發佈:2022-04-20
問題描述
當我們對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迴圈中如果想修改原始變數,可以直接修改原始變數本身才行