【Duke】Map声明、元素访问及遍历 008 - PingPongGooo/GoFoundation GitHub Wiki
Map 声明
m := map[string]int{"one":1,"two":2,"three":3}
m1 := map[string]int{}
m1["one"] = 1
m2 := make(map[string]int,10) // 10 initial capacity
package _map
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)
t.Logf("len m3=%d",len(m3))
}
// key存在,他的默认值是 0 值 。 和真实的 0 值 冲突
func TestAccessNotExistingKey(t *testing.T) {
m1:=map[int]int{}
t.Log(m1[1])
m1[2]=0
//m1[3]=0
t.Log(m1[2])
// key存在,他的默认值是 0 值 。 和真实的 0 值 冲突
if v, ok := m1[3]; ok{
t.Logf("key 3 is existing %d",v)
}else {
t.Log("key 3 is not existing")
}
}
Map 元素的访问 与其他编程语言的差异
在访问的key不存在时,仍然会返回 0 值, 不能通过返回 nil 来判断元素是否存在
if v,ok:=m["four"]; ok {
t.Log("four",v)
}else{
t.Log("Not existing")
}
Map 遍历
m := map[string]int{"one";1,"two":2, "three":3}
for k,v := range m{
t.Log(k,v)
}
func TestTravelMap(t *testing.T) {
m1 := map[int]int{1:1,2:4,3:9}
for k,v := range m1 {
t.Log(k,v)
}
}