今天偶然遇到這個錯誤,錯誤使用場景如下:
package main
import "fmt"
M := map[int]string{
1: "a",
2: "b",
}
func main() {
fmt.Println(M)
}
這個是因為:=
操作符導致的击奶,:=
不能用于聲明全局變量责掏!只能在函數(shù)內部使用。
:=
只用來聲明臨時變量, 初始化全局變量需使用var
關鍵字拷橘,正確操作如下:
package main
import "fmt"
var M = map[int]string{
1: "a",
2: "b",
}
func main() {
fmt.Println(M)
}
然后冗疮,有網友問如下的操作為什么不對,而同樣是在函數(shù)體外var n = 9
卻沒有問題
package main
import "fmt"
var n int//
n = 9 // 先定義术幔,然后進行賦值操作, 在函數(shù)體外不被允許四敞; 而`var n = 9`是變量初始化操作拔妥,在函數(shù)體外是允許的。變量初始化和變量賦值是兩個不同的概念没龙。
func main() {
fmt.Println(n)
}