1. printf
fmt.Printf("%[1]b %[1]d\n",v)
i := []int{5, 6, 7}
for _, v := range i {
fmt.Printf("%[1]b %[1]d\n",v)
}
2. channel
有缓冲channel,用于防止goroutine泄露
3. sync
1. sync.Pool 对象缓存
GC会清除sync.Pool缓存的对象
对象的缓存有效期为下一次GC之前
2. sync.Map
4. reflect
reflect.DeepEqual()可以比较slice和map
5. 定时器与打点器
定时器(time.NewTimer()) 是当你想要在未来某一刻执行一次时使用的
打点器 (time.NewTicker())则是当你想要在固定的时间间隔重复执行准备的
6.gjson
body, _ := ioutil.ReadAll(c.Request.Body)
message := gjson.Parse(string(body))
message.Value()
一般在业务场景下,还是推荐使用struct接收数据哈,因为方便对字段进行类型和规则的强校验,保障数据合法
以上的方式,用在接口字段不明确,或者接口字段变化较大的场景下比较合适