疑似go bug?也许是我对使用go姿势不对!

anko · · 505 次点击 · · 开始浏览    
### 遇到一个看似像go bug的写法,想向各位求证! (go版本14.7) ``` package main import ( "encoding/json" "fmt" ) func main() { ls:=[]uint8{1,2,3,4,5,6} var jsonBy []byte for k, v := range ls { if k == 0 { fmt.Println(jsonBy) jsonBy, err := json.Marshal(v) if err != nil { fmt.Println("序列化失败") return } //fmt.Println(jsonBy)//位置1,如果放这里,则正确 } fmt.Println(jsonBy)//位置2,如果放这里,则提示上面的jsonBy未使用,即不可编译通过 } } ``` ### 为了便于观看,给出上面代码的截图 ![image.png](https://static.studygolang.com/200927/12c5bfa7e9e3c409634bca47af018771.png) ### 为了修复bug,事实上我的业务必须放在第二个位置而不能放到第一个位置(上面的业务是我业务的简版),看来不是所有的地方都能使用冒号,所以我们为了申请新变量err,就把他在获取值之前先申明,如下代码: ``` package main import ( "encoding/json" "fmt" ) func main() { ls:=[]uint8{1,2,3,4,5,6} var jsonBy []byte for k, v := range ls { if k == 0 { fmt.Println(jsonBy) var err error//err在这里申明 jsonBy, err = json.Marshal(v)//这一行去掉冒号 if err != nil { fmt.Println("序列化失败") return } //fmt.Println(jsonBy)//位置1,如果放这里,则正确 } fmt.Println(jsonBy)//位置2,如果放这里,则提示上面的jsonBy未使用,即不可编译通过 } } ``` ### 同理,给出代码截图如下: ![image.png](https://static.studygolang.com/200927/2c9c7376b42c7e2aab6881400b723994.png) ### 好久没法文章,各位怎么看?用了挺久go才遇到这么一个让我疑惑的地方,还请各位大佬支招!

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

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

505 次点击  ∙  1 赞  
加入收藏 微博
11 回复  |  直到 2020-10-11 13:05:29
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传