s1 := []byte{} var s2 []byte
s1是empty,s2是nil 我写出s1的表达式,goland建议我改成s2,这是为啥?
有疑问加站长微信联系(非本文作者)

s1 := []byte{} var s2 []byte
s1是empty,s2是nil 我写出s1的表达式,goland建议我改成s2,这是为啥?
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
因为s1已经初始化了,s2只是声明。s1这种写法没必要,想要零值,直接声明就可以了。
s2这是nil啊
nil就对了,append之类的操作是支持nil的,赋值一个空的切片,除非明确需要(比如序列化输出需要个空而不是null的时候),不然后面append的时候又要扩容,分配内存啥的。ide觉得反正也要脱裤子,还不如不穿。。。