此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
已经宣布
答案 0 :(得分:14)
编译器不会抱怨global_var
外部主要内容。 仅抱怨您不使用的新创建的global_var
主。您可以通过查看go
提到的行号来查看。
你可以在任何没有人引用的函数之外尝试一个global_var
的空程序:没有问题。当然, 引用实际全局符号的usesGlobalVar
函数与您在main
中创建的函数无关。