json

  • 必须传入一个指针类型,但是声明的指针类型不行
1
2
3
4
5
6
7
// 错误
var res *Result
json.Unmarshal(b,res)

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

slice

  • slice传递时候,实际上都是值传递,只不过创建新的slice时候,系统没有全部复制一份,而是把原来的数据给了一个新的引用,这才导致了,只要容量不变化,新slice的操作都会转移到老slice上,slice结构如下
1
2
3
4
5
type slice struct {
array unsafe.Pointer // 指向数组内存地址的指针
len int // 已有元素长度
cap int // 切片总容量
}

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

1