Go每日一题(2)

引用新的元素的副本,而不是元素直接引用

package main

import(
    "fmt"
)

func main(){
    // fmt.Println("Hello World")
    
    slice := []int{0,1,2,3}
    m := make(map[int]*int)
    
    for k,v := range slice {
        
        // wrong sample 引用同一变量地址
        // m[k] = &v
        
        // correct sample, 使用新变量地址
        val := v
        m[k] = &val
    }
    
    for k,v := range m {
        fmt.Println(k, "->", *v)
    }
}

猜你喜欢

转载自www.cnblogs.com/dzone/p/12103639.html