duke-git /lancet

A comprehensive, efficient, and reusable util function library of Go.

★ 5,300⑂ 518👁 43⑃ 217● 133▤ 100
GoCreated 2021-11-28www.golancet.cn/en/
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]
 

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON