分享
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
### 遇到一个看似像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未使用,即不可编译通过
}
}
```
### 为了便于观看,给出上面代码的截图

### 为了修复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未使用,即不可编译通过
}
}
```
### 同理,给出代码截图如下:

### 好久没法文章,各位怎么看?用了挺久go才遇到这么一个让我疑惑的地方,还请各位大佬支招!
有疑问加站长微信联系(非本文作者))
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信1569 次点击 ∙ 1 赞
上一篇:Go语言测试——TDD
下一篇:Golang设计模式之原型模式
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传