今天偶然遇到这个错误,错误使用场景如下:
package main
import "fmt"
M := map[int]string{
1: "a",
2: "b",
}
func main() {
fmt.Println(M)
}
这个是因为:=
操作符导致的,:=
不能用于声明全局变量!只能在函数内部使用。
:=
只用来声明临时变量, 初始化全局变量需使用var
关键字,正确操作如下:
package main
import "fmt"
var M = map[int]string{
1: "a",
2: "b",
}
func main() {
fmt.Println(M)
}
然后,有网友问如下的操作为什么不对,而同样是在函数体外var n = 9
却没有问题
package main
import "fmt"
var n int//
n = 9 // 先定义,然后进行赋值操作, 在函数体外不被允许; 而`var n = 9`是变量初始化操作,在函数体外是允许的。变量初始化和变量赋值是两个不同的概念。
func main() {
fmt.Println(n)
}