全局变量内联赋值与组合声明/赋值运算符和另一个未声明的变量丢失范围?

时间:2014-05-08 22:10:20

标签: go

此Go程序无法编译。它会抛出错误global_var declared and not used

package main

import "log"

var global_var int

func main() {

    global_var, new_string := returnTwoVars()

    log.Println("new_string: " + new_string)
}

func returnTwoVars() (int, string) {
    return 1234, "woohoo"
}

func usesGlobalVar() int {
    return global_var * 2
}

但是,当我通过在main函数中声明:=并简单地使用new_string来删除使用=运算符的需要时,编译器看到它时没有问题global_var在全球范围内声明,并在程序的其他地方使用。我的直觉告诉我它应该知道global_var已经宣布

1 个答案:

答案 0 :(得分:14)

编译器不会抱怨global_var外部主要内容。 仅抱怨您不使用的新创建的global_var。您可以通过查看go提到的行号来查看。

你可以在任何没有人引用的函数之外尝试一个global_var的空程序:没有问题。当然, 引用实际全局符号的usesGlobalVar函数与您在main中创建的函数无关。