这是我纯手写的《Go语言入门》,手把手教你入门Go。源码+文章,看了你就会🥴,此处应有掌声👏👏👏。
文章中所有的代码我都放到了github.com/GanZhiXiong/go_learning这个仓库中。
Map实现工厂模式
工厂模式(Factory Pattern)是 编程语言 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
工厂模式意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,使其创建过程延迟到子类进行。
-
Map的value除了数据类型之外,还可以是一个函数
-
与Go的Dock type接口方式一起,可以方便的实现单一方法对象的工厂模式
在Go语言中函数是一等公民。
你可以用Map来实现一个平时需要比较多代码来实现的工厂模式。
代码示例:
func TestMapWithFunValue(t *testing.T) {
m := map[int]func(op int) int{}
m[0] = func(op int) int {
return op
}
m[1] = func(op int) int {
return op * op
}
m[2] = func(op int) int {
return op * op * op
}
t.Log(m[0](2), m[1](2), m[2](2))
}
关于Go中的工厂模式,这里不过多介绍了,后面还会讲到的。
关注点赞给我点支持吧!谢谢啦!🙂🙂🙂
Map实现Set集合
Java中的集合类,如HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
该类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。
下图为Java集合框架图:
该集合框架由三部分组成
- 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象
- 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。
- 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。
大家如果还是不能理解集合的话,可以看下Java集合框架。
不得不说Java设计的挺强大的,但是也确实够复杂的。
而Go的内置集合中没有Set实现,可以map[type]bool
实现Set集合。
代码示例:
func TestMapForSet(t *testing.T) {
mySet := map[int]bool{}
mySet[1] = true
t.Log(mySet)
key := 1
mapKeyExist(t, mySet, key)
delete(mySet, key)
mapKeyExist(t, mySet, key)
t.Log(mySet)
}
func mapKeyExist(t *testing.T, mySet map[int]bool, n int) {
if mySet[n] {
t.Logf("%d is existing", n)
} else {
t.Logf("%d is not existing", n)
}
}
支持🤟
🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟
- 🎸我会持续编写【软件开发相关】的文章,保持每周至少一篇文章。
- 🎸如果你也是【软件工程师】,【关注❤️我】,一定会对你有所帮助。
- 🎸如果这篇文章对你有所帮助,那就麻烦,【点赞👍】。
- 🎸您的支持将给与我更大的动力,谢谢😀。
🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟