项目遵守:
- 不引入任何第三方库
- 全力使用泛型
- 尽量优化性能
- 提供优雅可读的函数签名
本项目可能会有破坏性的修改函数签名行为,不要轻易升级
-
seq
一个高性能的golang的泛型链式调用库,实现了类似java stream逻辑,不依赖chan和goroutine,支持任意类型的链式调用,支持并行化( 可限制并行数量),排序等// 从19开始,每次减3,直到-10,额外添加100,10,0,1,过滤出偶数,再丢弃前5个,从小到大排序,打印到控制台 FromIntSeq(19, -10, -3).Add(-100,100,10,0,1).Filter(func(i int) bool { return i%2 == 0 }).Drop(5).Order(LessT[int]).ForEach(func(i int) { fmt.t.Log(i) }) // a 1 b 2 c 3 // "a,b,c" BiFromMap(map[string]int{"a": 1, "b": 2, "c": 3}).OnEach(func(k string, v int) { print(k, v) }).KSeq().JoinString(func(s string){retrun s}, ",")
更多例子见: seq_test.go biSeq_test.go
如果使用seq处理大interface{},可能会导致编译速度下降,编译缓存磁盘占用大 -
config
工作模式类似spring配置工具类 -
unsafe
获取goroutine id,hash等不安全操作 -
concurrent
一些并发相关的工具,包含可重入锁等 -
pool
一些池化工具:携程池,对象池 -
queue
简单的队列 -
storage
map等存储工具,swissMap,gls等 -
logger
日志工具 -
helper
一些工具,如: 字符串处理,时间日期处理,cron任务,延时任务 等