【问题标题】:What do you call the := operator?你怎么称呼 := 运算符?
【发布时间】:2014-01-16 20:47:32
【问题描述】:

我正在学习 Go,想知道是否有 := 运算符的名称。如x := 4

我能想到的最好的就是“蜘蛛脸”

示例


(来源:buzzfed.com

更新

我之所以问这个问题是因为我想知道您将如何像在结对编程会议中那样大声朗读代码。有人提出,运算符的正式名称是“短变量声明运算符”,但讽刺的是,这个名字太长了,不能经常使用。

你会如何阅读这个x := 4?到目前为止,我有“前冒号等于四”还是“前蜘蛛面四”?有更好的想法吗?

【问题讨论】:

  • 声明并赋值变量 x 为常数值 4。
  • 我说“冒号等于”。
  • 隐式/稀疏赋值运算符对我来说似乎是个好名字。

标签: go colon-equals


【解决方案1】:

The Go Programming Language Specification 将涉及:= 的声明称为“短变量声明”。因此,该运算符将被称为“短变量声明运算符”。

【讨论】:

  • 真的是“算子”吗?
  • 不是算子,these是算子。许多 go talk 也称之为“声明和初始化”(例如this
【解决方案2】:

分配?或“已分配”。实际上,我会使用“分配”,但我必须输入至少 30 个字符...

【讨论】:

    【解决方案3】:

    “声明为”呢

    x := 4
    

    你会说:“将 ex 声明为四个”或“ex 声明为四个”

    如果这样写

    var x = 4
    

    这也是正确的

    【讨论】:

    • 我比我的建议更喜欢这个。
    【解决方案4】:

    这只是我的想法,但我称之为“实例化”。恕我直言,assign 不是一个好的选择,因为它会将它与 Pascal 赋值运算符混淆。分配也是 go 和大多数其他计算机语言中用于“=”的动词。

    “decinit” 可能用作速记,我知道它没有其他含义。

    【讨论】:

      【解决方案5】:

      根据https://golang.org/ref/spec#OperatorsOperators combine operands into expressions. 的规范,这绝对不是operator。 (如果您不确定操作数或表达式到底是什么,请弄清楚它不能组合。否则,请始终检查规范https://golang.org/ref/spec#Expressions)。

      规范https://golang.org/ref/spec#Short_variable_declarations 中关于语言这方面的段落没有命名。

      Effective Go 中可用的相同段落也没有命名,https://golang.org/doc/effective_go#redeclaration

      搜索源代码,我可以找到它是如何定义的。

      https://cs.opensource.google/go/go/+/master:src/go/token/token.go;drc=master;l=80

      我得出的结论是它是定义令牌。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-18
        • 2013-02-14
        • 1970-01-01
        • 1970-01-01
        • 2011-01-16
        • 2015-08-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多