Go Map与工厂模式,在Go语言中实现Set 电脑版发表于:2020/12/17 18:16 ![go数据类型](https://img.tnblog.net/arcimg/hb/0dd243ae49394f12beed84237bfee1a3.jpg "go数据类型") >#Go Map与工厂模式,在Go语言中实现Set [TOC] Map与工厂模式 ------------ - Map 的 value 可以是一个方法 - 与 Go 的 Dock type 接口方式一起,可以方便的实现单一方法对象的工厂模式 ```go package map_test import "testing" 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)) } ``` ![](https://img.tnblog.net/arcimg/hb/65715fbb9ec34ea7a056ddc088b422d8.png) 实现 Set ------------ tn>Go 的内置集合中没有Set实现,可以map[type]bool >1. 元素的唯一性 2. 基本操作 - 添加元素 - 判断元素是否存在 - 删除元素 - 元素个数 ```go func TestMapForSet(t *testing.T) { mySet := map[int]bool{} mySet[1] = true n := 3 if mySet[3] { t.Logf("%d is existing", n) } else { t.Logf("%d is not existing", n) } mySet[3] = true t.Log(len(mySet)) delete(mySet, 1) n = 1 if mySet[n] { t.Logf("%d is existing", n) } else { t.Logf("%d is not existing", n) } } ``` ![](https://img.tnblog.net/arcimg/hb/ffbd672ce5184b3f8b612bc3a711d02a.png)