宣告並初始化地圖
你可以使用關鍵字 map
定義地圖,後跟其鍵的型別及其值:
// Keys are ints, values are ints.
var m1 map[int]int // initialized to nil
// Keys are strings, values are ints.
var m2 map[string]int // initialized to nil
地圖是參考型別,一旦定義,它們的值為 nil
。寫入 nil 貼圖會發生混亂 ,讀取將始終返回零值。
要初始化地圖,請使用 make
功能:
m := make(map[string]int)
使用 make
的雙引數形式,可以為地圖指定初始條目容量,從而覆蓋預設容量:
m := make(map[string]int, 30)
或者,你可以宣告一個對映,將其初始化為零值,然後稍後為其分配一個文字值,這有助於你將結構編組為 json,從而在返回時生成一個空對映。
m := make(map[string]int, 0)
你還可以製作地圖並使用大括號({}
)設定其初始值。
var m map[string]int = map[string]int{"Foo": 20, "Bar": 30}
fmt.Println(m["Foo"]) // outputs 20
以下所有語句都會導致變數繫結到相同的值。
// Declare, initializing to zero value, then assign a literal value.
var m map[string]int
m = map[string]int{}
// Declare and initialize via literal value.
var m = map[string]int{}
// Declare via short variable declaration and initialize with a literal value.
m := map[string]int{}
我們還可以使用地圖文字來建立具有一些初始鍵/值對的新地圖 。
鍵型別可以是任何類似的型別; 值得注意的是,這不包括函式,對映和切片 。值型別可以是任何型別,包括自定義型別或 interface{}
。
type Person struct {
FirstName string
LastName string
}
// Declare via short variable declaration and initialize with make.
m := make(map[string]Person)
// Declare, initializing to zero value, then assign a literal value.
var m map[string]Person
m = map[string]Person{}
// Declare and initialize via literal value.
var m = map[string]Person{}
// Declare via short variable declaration and initialize with a literal value.
m := map[string]Person{}