这个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
}
Run Code Online (Sandbox Code Playgroud)
但是,当我:=通过new_string在main函数中声明并简单地使用来消除使用运算符的需要时=,编译器看到global_var全局声明并在程序中的其他地方使用时没有问题.我的直觉告诉我它应该知道global_var已经宣布了
cni*_*tar 14
编译器不会抱怨global_var外部主体.它只会抱怨global_var您不使用的主要新创建.您可以通过查看go提及的行号来查看.
你可以尝试一个global_var没有人引用的外部任何函数的空程序:没有问题.当然,在usesGlobalVar该功能确实引用实际全局符号无关与您创建一个main.