問下append後地址不一樣了

嘿嘿嘿發表於2018-05-09

直接上程式碼

func main() {

    var w []W

    for i := 0 ; i < 5; i++{
        obj := W{
            K:1,
            V:2,
        }
        fmt.Println(&(obj.V))
        //output
        //0xc042052088
        //0xc0420520c8
        //0xc0420520d8
        //0xc0420520e8
        //0xc0420520f8
        w = append(w,obj)

    fmt.Println("=======================================")
    ///這麼用就不會出現這種情況 
    for i,_ :=range w{
        fmt.Println(&(w[i].V))
        //output
        //0xc042086008
        //0xc042086018
        //0xc042086028
        //0xc042086038
        //0xc042086048
    }
}

type W struct {
    K int64
    V int64
}

為什麼append後結構體裡元素的地址也會改變

相關文章