5,300
stars
+0+-1+4
518
forks
43
watchers
217
prs
133
issues
100
releases
–
discussions
README
!Go version
lancet(柳叶刀)是一个全面、高效、可复用的go语言工具函数库。 lancet受到了java apache common包和lodash.js的启发。
官网 | English
特性
- 👏 全面、高效、可复用。
- 💪 700+常用 go 工具函数,支持 string、slice、datetime、net、crypt...
- 💅 只依赖 go 标准库和 golang.org/x。
- 🌍 所有导出函数单元测试覆盖率 100%。
安装
Note:
1. 使用 go1.18 及以上版本的用户,建议安装 v2.x.x。 因为 v2.x.x 应用 go1.18 的泛型重写了大部分函数。
go
go get github.com/duke-git/lancet/v2 //安装v2最新版本v2.x.x
2. 使用 go1.18 以下版本的用户,必须安装 v1.x.x。目前最新的 v1 版本是 v1.4.6。
go
go get github.com/duke-git/lancet// 使用go1.18以下版本, 必须安装v1.x.x版本
用法
lancet 是以包的结构组织代码的,使用时需要导入相应的包名。例如:如果使用字符串相关函数,需要导入 strutil 包:
go
import "github.com/duke-git/lancet/v2/strutil"
示例
此处以字符串工具函数 Reverse(逆序字符串)为例,需要导入 strutil 包:
go
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/strutil"
)
func main() {
s := "hello"
rs := strutil.Reverse(s)
fmt.Println(rs) //olleh
}
文档
目录
- Algorithm
- Compare
- Concurrency
- Condition
- Convertor
- Cryptor
- Datetime
- Datastructure
- EventBus
- Enum
- Fileutil
- Formatter
- Function
- Maputil
- Mathutil
- Netutil
- Pointer
- Random
- Retry
- Slice
- Stream
- Structs
- Strutil
- System
- Tuple
- Validator
- Xerror
1. algorithm 包实现一些基本查找和排序算法。 回到目录
go
import "github.com/duke-git/lancet/v2/algorithm"
函数列表:
- BubbleSort : 使用冒泡排序算法对切片进行排序。
[doc]
[play]
- CountSort : 使用计数排序算法对切片进行排序。不改变原数据。
[doc]
[play]
- HeapSort : 使用堆排序算法对切片进行排序。
[doc]
[play]
- InsertionSort : 使用插入排序算法对切片进行排序。
[doc]
[play]
- MergeSort : 使用合并排序算法对切片进行排序。
[doc]
[play]
- QuickSort : 使用快速排序算法对切片进行排序。
[doc]
[play]
- SelectionSort : 使用选择排序算法对切片进行排序。
[doc]
[play]
- ShellSort : 使用希尔排序算法对切片进行排序。
[doc]
[play]
- BinarySearch : 返回排序切片中目标值的索引,使用二分搜索(递归调用)。
[doc]
[play]
- BinaryIterativeSearch :返回排序切片中目标值的索引,使用二分搜索(非递归)。
[doc]
[play]
- LinearSearch : 基于传入的相等函数返回切片中目标值的索引。(线性查找)
[doc]
[play]
- LRUCache : 应用 lru 算法实现内存缓存.
[doc]
[play]
2. compare 包提供几个轻量级的类型比较函数。 回到目录
go
import "github.com/duke-git/lancet/v2/compare"
函数列表:
- Equal : 检查两个值是否相等(检查类型和值)。
[doc]
[play]
- EqualValue : 检查两个值是否相等(只检查值)。
[doc]
[play]
- LessThan : 验证参数left的值是否小于参数right的值。
[doc]
[play]
- GreaterThan : 验证参数left的值是否大于参数right的值。
[doc]
[play]
- LessOrEqual : 验证参数left的值是否小于或等于参数right的值。
[doc]
[play]
- GreaterOrEqual : 验证参数left的值是否大于或等于参数right的值。
[doc]
[play]
- InDelta : 检查增量内两个值是否相等。
[doc]
3. concurrency 包含一些支持并发编程的功能。例如:goroutine, channel, async 等。 回到目录
go
import "github.com/duke-git/lancet/v2/concurrency"
函数列表:
- NewChannel : 返回一个 Channel 指针实例。
[doc]
[play]
- Bridge : 将多个 channel 链接到一个 channel,直到取消上下文。
[doc]
[play]
- FanIn : 将多个 channel 合并为一个 channel,直到取消上下文。
[doc]
[play]
- Generate : 根据传入的值,生成 channel。
[doc]
[play]
- Or : 将一个或多个 channel 读取到一个 channel 中,当任何读取 channel 关闭时将结束读取。
[doc]
[play]
- OrDone : 将一个 channel 读入另一个 channel,直到取消上下文。
[doc]
[play]
- Repeat : 返回一个 channel,将参数values重复放入 channel,直到取消上下文。
[doc]