golang

json

  • 必须传入一个指针类型,但是声明的指针类型不行

    // 错误
    var res *Result
    json.Unmarshal(b,res)
    
    // 正确
    var res *Result
    json.Unmarshal(b,&res)

slice

  • slice传递时候,实际上都是值传递,只不过创建新的slice时候,系统没有全部复制一份,而是把原来的数据给了一个新的引用,这才导致了,只要容量不变化,新slice的操作都会转移到老slice上,slice结构如下

    type slice struct {
      array unsafe.Pointer // 指向数组内存地址的指针
      len   int            // 已有元素长度
      cap   int            // 切片总容量
    }

    如果彻底不想改变老slice,可以逐个值放进去

此处评论已关闭