V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
ThinkStu
V2EX  ›  Go 编程语言

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

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


    @kaf var 还是:=两种写法在 gc 上没区别的
    fgwmlhdkkkw
        5
    fgwmlhdkkkw  
       2023-07-11 21:08:05 +08:00 via Android
    golang 就是土包金,,,runtime 非常好,语法非常烂。那个泛型还不如不加呢,,,简直糊弄😅
    liaoyuan6666
        6
    liaoyuan6666  
       2023-07-11 22:36:17 +08:00 via iPhone
    在外边使用:= 你不感觉很容易遗漏出问题吗
    trzzzz
        7
    trzzzz  
       2023-07-11 23:01:53 +08:00
    @fgwmlhdkkkw go 虽然有,但总感觉没有 java 中那么好用,学起来总感觉迷迷糊糊的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1362 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:56 · PVG 01:56 · LAX 09:56 · JFK 12:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.