关于重复声明格式转换方法的返回值,没有报错

关于重复声明格式转换方法的返回值,没有报错

https://img1.sycdn.imooc.com//climg/63b2cccc099a222516541578.jpg

提问、在 main 方法内我重复声明了两次 err ,为什么没有报错且可以正常执行啊

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

1. 重复定义当然会出错。

2. 问题在于,:=这个操作,并不是重新定义所有左侧变量,而是重新定义左侧变量中需要定义的变量。

3. 以你的代码为例,第二次:=的时候,只是定义了myint而已。

也就是说,myint, err := xx 表示如果没有定义myint则自动定义myint, 但是err已经定义了, 所以这里表示err不需要重新定义了使用已有的,但是myint没有定义就会自动帮定义

更细节的信息可以到 https://go.dev/ref/spec#Short_variable_declarations 官网查看

DecoLucp 2023-01-02 23:20:10

我的理解是:您所定义的 err 是 if 函数中的局部变量,在两个不同的 if 函数域中是可以重复使用的,您可以在 if 函数之外输出一下 err 以作验证

  • 提问者 高老龟 #1

    不是的哇、变量声明在 36 和 50 行,37 和 51 行才是判断语句的作用域

    而且,只有 err 可以重复声明,前一个返回值重复声明时就会报错

    https://img1.sycdn.imooc.com//climg/63b3f3ff0957874414601466.jpg

    2023-01-03 17:23:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Go开发工程师全新版
  • 参与学习       489    人
  • 解答问题       559    个

风口上的技术,薪资水平遥遥领先,现在学习正值红利期! 未来3-5年,Go语言势必成为企业高性能项目中不可替代的语言 从基础到项目实战再到重构,对转行人员友好,真正从入门到精通!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师