初级会员
  • 第 24610 位会员
  • lijingtian
  • 2018-11-02 09:42:13
  • Offline
  • 27 56

最近发布的主题

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • ```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,所以看不到。
  • @jaz2098 哦,是这样啊,我还真没思考这么深,哈哈。
  • @cyminute 是不同的,值传递和引用传递是函数参数的两种传值方式。Go默认是值传递,想要使用引用传递,需要将传入参数修改为指针类型。就像二楼说的,指针本质上也是值传递,只是可以通过指针修改参数本身的值。