package ext_map
import"testing"funcTestMapWithFunValue(t *testing.T){// func(op int)是值的函数
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))// output:2 4 8}
与Go的duck typing接口方式一致,可以方便的实现单一方法对象的工厂模式
2、实现Set
元素的唯一性
基本操作:添加元素;判断元素是否存在;删除元素;获取元素个数
package ext_map
import"testing"funcTestMapForSet(t *testing.T){
mySet :=map[int]bool{}
mySet[1]=true// 新增
n :=1if mySet[1]{// 判断元素是否存在
t.Logf("%d is existing", n)}else{
t.Logf("%d is not existing", n)}
mySet[3]=true
t.Log(len(mySet))// 元素个数delete(mySet,1)//删除元素if mySet[1]{// 判断元素是否存在
t.Logf("%d is existing", n)}else{
t.Logf("%d is not existing", n)}}/*
output:
1 is existing
2
1 is not existing
*/