以下两个表达式为什么goland建议我将s1的形式换成s2的形式

holen1210 · 2019-02-22 18:00:27 · 1030 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2019-02-22 18:00:27 的主题,其中的信息可能已经有所发展或是发生改变。

s1 := []byte{} var s2 []byte

s1是empty,s2是nil 我写出s1的表达式,goland建议我改成s2,这是为啥?


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1030 次点击  
加入收藏 微博
3 回复  |  直到 2019-03-04 00:37:10
kevenp
kevenp · #1 · 6年之前

因为s1已经初始化了,s2只是声明。s1这种写法没必要,想要零值,直接声明就可以了。

holen1210
holen1210 · #2 · 6年之前
kevenpkevenp #1 回复

因为s1已经初始化了,s2只是声明。s1这种写法没必要,想要零值,直接声明就可以了。

s2这是nil啊

bighippo
bighippo · #3 · 6年之前

nil就对了,append之类的操作是支持nil的,赋值一个空的切片,除非明确需要(比如序列化输出需要个空而不是null的时候),不然后面append的时候又要扩容,分配内存啥的。ide觉得反正也要脱裤子,还不如不穿。。。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传