关于通用类型和Slice的一个问题

GuoYuefei · · 879 次点击
```go s := &ss{make([]*vv,0,12)} s.Data = append(s.Data, vvs) fmt.Printf("%p\n", s.Data[0].a) fmt.Println(s.Data[0].getvvSlice()) vvvs := s.Data[0].getvvSlice() fmt.Printf("vvvs.poriner1: %p \n", vvvs) vvvs = append(vvvs, &vv{2134214}) fmt.Println("vvvs:", vvvs) fmt.Printf("vvvs.poriner2: %p, len:%d, cap:%d \n", vvvs, len(vvvs), cap(vvvs)) fmt.Printf("%p, len:%d, cap:%d \n", s.Data[0].a, len(s.Data[0].getvvSlice()), cap(s.Data[0].getvvSlice())) fmt.Println(s.Data[0].getvvSlice()) s.Data[0].a = vvvs fmt.Printf("%p, len:%d, cap:%d \n", s.Data[0].a, len(s.Data[0].getvvSlice()), cap(s.Data[0].getvvSlice())) fmt.Println(s.Data[0].getvvSlice()) ``` ```go 0xc042010140 [0xc042008240] vvvs.poriner1: 0xc042010140 vvvs: [0xc042008240 0xc042008290] vvvs.poriner2: 0xc042010140, len:2, cap:10 0xc042010140, len:1, cap:10 [0xc042008240] 0xc042010140, len:2, cap:10 [0xc042008240 0xc042008290] ``` vvvs的len改变了,但是s.Data[0].a的len没有改变,数据是插入进去的,但是因为len=1,所以看不到。
#1