for range中的tmp不是每次循环重新定义的
func goAttentionForLoop() {
var ax = []int{1, 2, 3}
var bx *int
for key, tmp := range ax {
if 0 == key {
bx = &tmp
}
}
fmt.Printf("bx=%d\n", *bx)
}
//打印结果:bx=3
func goAttentionForLoop() {
var ax = []int{1, 2, 3}
var bx *int
for key, tmp := range ax {
if 0 == key {
bx = &ax[key]
}
tmp = tmp
}
fmt.Printf("bx=%d\n", *bx)
}
//打印结果:bx=1
说明:
for key, tmp := range ax {
的写法tmp并不会每个Loop都重新定义的。而相当于:
var key, tmp int
for key, tmp = range ax {