「这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战」。
简介
collections是无意在github上发现的一款小巧好用的队列包,还是国人写的,不错不错
目前已有的功能包括:
- 先进先出队列
- 后进先出队列
- 优先队列
- 双端队列
- 有序Map
- 计数器
- 排序
缺点就是已经好几年没更新了,但是了功能还能用😅
官网传送门: github.com/chenjiandon…
安装
先使用go将包下载到本地
1 | js复制代码go get github.com/chenjiandongx/collections |
在代码编辑器里面引入既可使用
1 | js复制代码import "github.com/chenjiandongx/collections" |
使用
所以的功能方法都在collections里面,不同功能使用不同方法
先进先出
先进先出的优点在一些需要按顺序执行的场景,确保流程可以按照预先 设定好的顺序执行,这在做运维自动化时特别有用(一个脚本执行完后再执行另一个脚本)
运行以下代码会 在控制台输出从0到9的数字(从小到大)
1 | js复制代码var q = Q() |
后进先出
运行以下代码,会发现 数字是从大到小输出的
1 | js复制代码func main() { |
实战demo
上面的小demo运行起来好像也没太大问题,但是如果加上了goroutine,在实际运行中可能达不到想要的效果,所以这里需要结合channe来实现一个,可以不断提交任务,但每次只执行一个任务,且只有这个任务执行完了,再执行下一个任务
1 | js复制代码var ( |
该demo使用提顺序执行队列,GET接口/api/devops接收提交参数,可以不停的提交,但是方法QueueApi每5秒循环查一次,当查询到队列里有数据,就开始执行,每次只执行一个,执行成功后。继续循环以上逻辑
1 | js复制代码#测试 |
总结
code的力量还是很强大的,虽然这个包并不出名,作者也不是鼎鼎大名大佬,但是写出来的包依然非常棒(实用)
至于该包的其它的功能,有需要的同学可以自行探索哦
本文转载自: 掘金