Golang结构从输入中获得不同的值

时间:2017-05-11 21:30:41

标签: go

我在以下代码中看到了奇怪的行为:

type A struct {
    D []int8
}

func main() {
    a := A{D: make([]int8, 0)}
    a.D = append(a.D, 0)

    b := a
    c := a
    b.D = append(b.D, 1)
    c.D = append(c.D, 2)
    fmt.Println(a.D, b.D, c.D)
}

我期待输出

[0] [0 1] [0 2]

但是我得到了

[0] [0 2] [0 2]

任何人都知道为什么......?

P.S。如果我注释掉行" a.D =追加(a.D,0)",或者从" [] int8"更改D的类型。到" [] int",我得到了我的预期。奇怪的...

0 个答案:

没有答案