Go Map声明、元素访问与遍历 电脑版发表于:2020/12/15 18:03  >#Go Map声明、元素访问与遍历 [TOC] Map的声明 ------------ >Map的声明相当于其他语言的键值队,通常通过`map[key_type]value_type`的方式声明。如下举例: ```go m := map[string]int{"one": 1, "two": 2,"three": 3} m1 := map[string]int{} m1["one"] = 1 m2 := make(map[string]int, 10) //这里的10只能是cap不能是len ``` >我们可以通过下面的代码,对map做基本的了解 ```go package map_test import "testing" func TestInitMap(t *testing.T) { m1 := map[int]int{1: 1, 2: 4, 3: 9} t.Log(m1[2]) t.Logf("len m1=%d", len(m1)) m2 := map[int]int{} m2[4] = 16 t.Logf("len m2=%d", len(m2)) m3 := make(map[int]int, 10) // cap 不支持map键值对 t.Logf("len m3=%d", len(m3)) } ```  判断非空 ------------ >从刚刚的代码示例,我们知道了当不赋值时返回的不是nil而是0。当其键中值的本身为0时,我们该如何判断出它赋值还是没有赋值。接下来的案例就会解决这个问题。 ```go func TestAccessNotExistingKey(t *testing.T) { m1 := map[int]int{} t.Log(m1[1]) m1[2] = 0 t.Log(m1[2]) // 判断值存在还是空 。(v是值,ok是判断) if v, ok := m1[3]; ok { t.Logf("Key 3's value is %d", v) } else { t.Logf("Key 3 is not existing.") } } ```  遍历Map ------------ ```go func TestTravelMap(t *testing.T) { m1 := map[int]int{1: 1, 2: 4, 3: 9} for k, v := range m1 { t.Log(k, v) } } ``` 