map声明
map声明后为空时候返回0
package my_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) //10 cap
t.Logf("len m3=%d",len(m3))
}
func TestAccessNotExistingKey(t *testing.T){
m1 := map[int]int{}
t.Log(m1[1])
m1[2] = 0
t.Log(m1[2])
if _,ok := m1[3];ok{
t.Logf("key 3 is not exists %d",m1[3])
}else{
t.Logf("key 3 is not existing %d",m1[3] ) //空返回0
}
}
func TestTravelMap(t *testing.T){
m1 := map[int]int{1:2,2:3,3:4}
for k,v := range m1{
t.Log(k,v)
}
}
map与工厂模式
package my_map
import "testing"
func TestMapFactor(t *testing.T){
m:=map[int]func(op int)int{}
m[1] = func(op int) int {
return op
}
m[2] = func(op int) int {
return op * op
}
m[3] = func(op int) int {
return op * op * op
}
t.Log(m[1](2),m[2](2),m[3](2))
}
//实现set
func TestMapForSet(t *testing.T){
mySet := map[int]bool{}
mySet[1] = true
n := 1
if mySet[n]{
t.Logf("%d is exists",n)
}else{
t.Logf("%d is not existing",n)
}
//mySet[3] = true
t.Log(len(mySet))
delete(mySet,1)
t.Log(len(mySet))
}