如何在go for range迭代时修改值

for range的val不能直接修改,因为地址不同

参考:https://codeday.me/bug/20170630/34971.html

package main

import "fmt"

func main() {
	x := make([]int, 3)

	x[0], x[1], x[2] = 1, 2, 3

	for i, val := range x {
		fmt.Println(&x[i], "vs.", &val)
	}
}

//输出
0x416020 vs. 0x41602c
0x416024 vs. 0x41602c
0x416028 vs. 0x41602c

 

你可能感兴趣的:(go)