go需要注意的点
- for循环性能总体上比for range好
- 指针传参总体上比值传参开销要小,但是要面临着一改全改的风险,指针一旦改动,所有链路都会变化
- go redis中查询列表(lrange)和集合(smember)时,如果键不存在不会报redis nil错误,其他类型如果键不存在会报redis nil错误
- go redis sadd 切片时,类型只能是any,如果是[]int64,不能批量添加,只能一次一次加。或者将数据marshal成二进制再存redis
- go对于slice进行append追加时,如果不定义长度和容量,slcie的容量会加倍增加。默认情况下切片cap值小于1024的时候是成倍数增长的。比如有1变为2在变为4……但是超过1024后倍数会小于2倍。
- go的切片不能直接赋值,并不会改变原来的值,应该用copy复制slice