3.3 Map 与工厂模式,在 Go 语言中实现 Set
peter 445 3

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

  1. 元素的唯一性
  2. 基本操作
    1. 添加元素
    2. 判断元素是否存在
    3. 删除元素
    4. 元素个数

测试实例 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))
}
评论区

索引目录