【问题标题】:What does := mean in Go?:= 在 Go 中是什么意思?
【发布时间】:2013-05-10 18:22:53
【问题描述】:

我正在学习本教程,特别是练习 8:

http://tour.golang.org/#8


package main

import "fmt"

func swap(x, y string) (string, string) {
    return y, x
}

func main() {
    a, b := swap("hello", "world")
    fmt.Println(a, b)
}

:= 具体是什么意思?具有讽刺意味的是,搜索 Go 文档非常困难。

【问题讨论】:

  • @BenjaminGruenbaum 我想这是一个知道要搜索什么的情况。我尝试了go := meaninggolang :=,但没有出现任何相关信息。
  • 对于它的价值,它不是我通常寻找 Go 资源/规范的地方
  • 如果你遇到了一些你不懂的语言,而不是谷歌搜索(这绝对不能很好地用于标点符号),只需打开 golang.org/ref/spec 并在那里搜索。这是该语言的实际规范,而且不是很大。页面上第二次出现“:=”正是您想要的。
  • @KevinBallard 感谢您的建议。
  • 解释了in the tutorial

标签: go colon-equals


【解决方案1】:

A short variable declaration 使用语法:

ShortVarDecl = IdentifierList ":=" ExpressionList .

它是带有初始化表达式但没有类型的常规变量声明的简写:

【讨论】:

    【解决方案2】:

    继续浏览第 12 页!

    围棋之旅

    Short variable declarations

    在函数内部,可以使用 := 短赋值语句 隐式类型的 var 声明的位置。

    (在函数之外,每个构造都以关键字和 := 开头 构造不可用。)

    【讨论】:

      【解决方案3】:

      正如其他人已经解释的那样,:= 用于声明和赋值,而 = 仅用于赋值。

      例如,var abc int = 20 与 abc := 20 相同。

      当您不想用类型或结构声明填充代码时,它很有用。

      【讨论】:

      • 把我的评论当作一个小玩笑:不要以“正如其他人已经解释过......”开头,对吧? ?
      【解决方案4】:

      := 不是运算符。它是 Short 变量声明子句语法的一部分。

      更多信息:https://golang.org/ref/spec#Short_variable_declarations

      【讨论】:

        【解决方案5】:

        := 语法是声明和初始化变量的简写,例如 f := "car"var f string = "car" 的简写形式

        使用短变量声明运算符(:=)只能声明局部变量。如果您尝试使用短声明运算符来声明全局变量,则会出现错误。

        更多详情请参考official documentation

        【讨论】:

        • 您可以添加指向官方文档的链接,例如接受的答案。我也觉得这个符号只能用在局部变量中吧?如果是这样,您可以添加它。
        • @FerranMaylinch 感谢您的建议,使其更准确..
        • 有趣的是你投了反对票,然后有人写了同样的答案?
        【解决方案6】:

        根据我关于 Go 的书,这只是一个简短的变量声明语句 完全一样

        var s = ""
        

        但它更容易声明,而且它的范围不那么广泛。 A := var decleration 也不能有 interface{} 类型。不过,您可能会在几年后遇到这种情况

        【讨论】:

        • 两者唯一的区别是var可以在全局范围内使用。您也可以在函数中使用var,它的行为与:= 完全相同。此外,您可以将 interface{} 类型与 var 声明一起使用。
        【解决方案7】:

        := 表示 Golang 猜测是哪种类型的变量

        示例 var number uint16 = 260 这是显式变量声明

        var number = 260 这意味着告诉 GOLANG 隐式定义这个变量应该是什么类型

        number := 260 表达式赋值运算符与之前相同,但没有 var 并告诉 GOLANG 猜测这是什么类型

        【讨论】:

          【解决方案8】:

          := 表示一个变量,我们可以使用 := 为变量赋值。

          【讨论】:

            猜你喜欢
            • 2015-11-03
            • 1970-01-01
            • 1970-01-01
            • 2023-03-18
            • 2015-03-16
            • 2013-05-07
            • 2018-06-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多