Map引起的深拷贝问题使用make避免
func TestMapInit(t *testing.T) {
m := map[string]int{"one":1,"two":2,"three":3}
m1 := map[string]int{}
m1["one"] = 1
m["one"] = 2
m2 := make(map[string]int,10)
m2["two"] = 6
t.Log(m1)
t.Logf("len m1 = %d",len(m1))
}
Map判断K值是否存在以及Value是否为空
func TestAccessNotTxistngKey(t *testing.T) {
m1 := map[int]int{}
t.Log(m1[1])
m1[2] = 0
t.Log(m1[2])
if v,ok := m1[3];ok{
t.Log("num",v,"is Nil",ok)
}else{
t.Log("Its nil")
}
}
使用for each遍历Map
func TestTravelMap(t *testing.T){
m1 := map[int]int{1:1,2:2,3:9}
for k,v :=range m1{
t.Log(k,v)
}
}
使用函数类型作为Map的Value
func TestMapWithFunValue(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))
}
使用Map实现Set的功能
func TestMapForSet(t *testing.T) {
mySet := map[int]bool{}
mySet[1] = true
n := 1
if mySet[n] {
t.Logf("%d is exiting!", n)
} else {
t.Logf("%d is not exiting", n)
}
mySet[10] = true
t.Log(len(mySet))
delete(mySet,1)
}