我在以下代码中看到了奇怪的行为:
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",我得到了我的预期。奇怪的...