go中的map是hash表的一個引用,類型寫為:map[key]value,其中的key, value分別對應一種數據類型,如map[string]string
1.map初始化
package main import "fmt" func main() { //初始化 var m1 = make(map[interface{}]interface{}) m1["1"] = "c" m1["c1"] = 1 fmt.Println(m1) // m0 string var m0 map[string]string // 定義map類型變量m0,key的類型為string,value的類型string fmt.Println(m0) // 輸出: map[] // m2 interface{} var m2 map[interface{}]string m2 = make(map[interface{}]string) //m1[[]byte("k2")]="v2" // panic: runtime error: hash of unhashable type []uint8 m2[123] = "123" m2[12.3] = "123" fmt.Println(m2) // map[123:123 12.3:123] // m3 數組 a3 := [3]int{1, 2, 3} var m3 map[[3]int]string m3 = make(map[[3]int]string) m3[a3] = "m2" fmt.Println(m3) // map[[1 2 3]:m2] // m4 可以,book1里面的元素都是支持== != struct type book1 struct { name string } var m4 map[book1]string fmt.Println(m4) // 輸出: map[] }
2.map查找
v,ok :=m5["a"] //ok為bool值 if ok { fmt.Println(v) }
3.增加,修改
//增加修改 m6 := map[string]string{ "a": "va", "b": "vb", } m6["c"] = "11" //若key存在則是修改,不在則是增加 fmt.Println(m6)
4.刪除
m7 := map[string]string{ "a": "va", "b": "vb", } delete(m7, "x") // 刪除不存在的key,原m不影響 delete(m7, "a") // 刪除存在的key fmt.Println(m7)
5.遍歷元素
m8 := map[string]string{ "a": "va", "b": "vb", } for k, v := range m8 { fmt.Printf("k:[%v].v:[%v]\n", k, v) // 輸出k,v值 }
6.獲取字典個數
//獲取個數 m9 := map[string]string{ "a": "va", "b": "vb", } fmt.Println(len(m9))