为什么短赋值语句 := 不能在函数外使用

2023-07-11 19:57:14 +08:00
 ThinkStu
一直不明白在 golang 中为什么会有这一条规定
1894 次点击
所在节点    Go 编程语言
7 条回复
0TSH60F7J2rVkg8t
2023-07-11 20:09:24 +08:00
我的理解不一定对,短赋值语句实际上是一个声明语句+一个赋值语句构成的,赋值既声明。函数体内这种情况不复杂,不涉及其它地方的调用,简单也方便。但函数外属于全局变量,如果允许短赋值声明的话,可能在单元 A 里面,声明一个 foo ,结果在单元 B 里面又声明了一个 foo ,此时两个 foo 是有歧义的,可能隐含各种可能的 bug ,所以才不允许吧。乱猜的不一定对。
Frankcox
2023-07-11 20:11:52 +08:00
kaf
2023-07-11 20:37:33 +08:00
为了 gc 效率吧
Trim21
2023-07-11 20:40:23 +08:00
@Frankcox 感觉这个答案可以用来解决 80%的 go 语法问题…


@kaf var 还是:=两种写法在 gc 上没区别的
fgwmlhdkkkw
2023-07-11 21:08:05 +08:00
golang 就是土包金,,,runtime 非常好,语法非常烂。那个泛型还不如不加呢,,,简直糊弄😅
liaoyuan6666
2023-07-11 22:36:17 +08:00
在外边使用:= 你不感觉很容易遗漏出问题吗
trzzzz
2023-07-11 23:01:53 +08:00
@fgwmlhdkkkw go 虽然有,但总感觉没有 java 中那么好用,学起来总感觉迷迷糊糊的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/955952

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX