为了账号安全,请及时绑定邮箱和手机立即绑定

这些行代码在golang中是否相同?

这些行代码在golang中是否相同?

Go
眼眸繁星 2023-02-06 10:34:30
A 和 B 一样吗?Aif err := json.NewDecoder(r.Body).Decode(&t); err != nil {    rnd.JSON(w, http.StatusProcessing, err)    return}乙err := json.NewDecoder(r.Body).Decode(&t);if err != nil {    rnd.JSON(w, http.StatusProcessing, err)    return}
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

它们是等价的,除了一个区别:err变量的范围。在 A 版本中,err变量的范围是if声明:在if.

在 B 版本中,err变量也将在if语句之后的范围内,如果err之前已经定义,它也可能导致编译时错误。

最好始终最小化变量的范围(这样可以减少滥用它们的机会)。如果你不想在 之后进一步检查返回的错误if,最好使用 A 版本。如果您在 之后确实需要它if,那么显然 B 版本是最佳选择。


查看完整回答
反对 回复 2023-02-06
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号