Map 与工厂模式
在 Go 语言中,函数是一等公民
- Map 的 value 可以是一个方法
- 与 Go 的 Docker type 接口方式一起,可以方便的实现单一方法对象的工厂模式
测试实例 1
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)) // 2 4 8
}
实现 Set
Go 的内置集合中没有实现 Set,可以 map[type]bool
- 元素的唯一性
- 基本操作
- 添加元素
- 判断元素是否存在
- 删除元素
- 元素个数
测试实例 2
func TestMapForSet(t *testing.T) {
set := map[int]bool{}
// 1. 添加元素
set[1] = true
// 2. 判断元素是否存在
n:=2
if set[n] {
t.Logf("%d is existing!", n)
} else {
t.Logf("%d is not existing!", n)
}
// 3. 删除元素
delete(set, 1)
// 4. 元素个数
t.Log(len(set))
}