MCPcopy
hub / github.com/duke-git/lancet

github.com/duke-git/lancet @v2.3.9 sqlite

repository ↗ · DeepWiki ↗ · release v2.3.9 ↗
2,921 symbols 13,124 edges 173 files 1,201 documented · 41%
README

Go version Release GoDoc Go Report Card test codecov License Gurubase

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 get github.com/duke-git/lancet/v2 //安装v2最新版本v2.x.x
  1. 使用 go1.18 以下版本的用户,必须安装 v1.x.x。目前最新的 v1 版本是 v1.4.6。
go get github.com/duke-git/lancet// 使用go1.18以下版本, 必须安装v1.x.x版本

用法

lancet 是以包的结构组织代码的,使用时需要导入相应的包名。例如:如果使用字符串相关函数,需要导入 strutil 包:

import "github.com/duke-git/lancet/v2/strutil"

示例

此处以字符串工具函数 Reverse(逆序字符串)为例,需要导入 strutil 包:

package main

import (
    "fmt"
    "github.com/duke-git/lancet/v2/strutil"
)

func main() {
    s := "hello"
    rs := strutil.Reverse(s)
    fmt.Println(rs) //olleh
}

文档

目录

1. algorithm 包实现一些基本查找和排序算法。        回到目录

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 包提供几个轻量级的类型比较函数。       回到目录

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 等。       回到目录

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] [play]
  • RepeatFn : 返回一个 channel,重复执行函数 fn,并将结果放入返回的 channel,直到取消上下文。 [doc] [play]
  • Take : 返回一个 channel,其值从另一个 channel 获取,直到取消上下文。 [doc] [play]
  • Tee : 将一个 channel 分成两个 channel,直到取消上下文。 [doc] [play]
  • NewKeyedLocker : NewKeyedLocker 创建一个新的 KeyedLocker,并为锁的过期设置指定的 TTL。 [doc] [play]
  • Do :为指定的键获取锁并执行提供的函数。 [doc] [play]
  • NewRWKeyedLocker :RWKeyedLocker 是一个简单的键值读写锁实现,允许非阻塞的锁获取。 [doc] [play]
  • RLock : 为指定的键获取读锁并执行提供的函数。 [doc] [play]
  • Lock : 为指定的键获取锁并执行提供的函数。 [doc] [play]
  • NewTryKeyedLocker : 创建一个 TryKeyedLocker 实例,TryKeyedLocker 是 KeyedLocker 的非阻塞版本。 [doc] [play]
  • TryLock : TryLock 尝试获取指定键的锁。如果锁成功获取,则返回 true,否则返回 false。 [doc] [play]
  • Unlock : 释放指定键的锁。 [doc] [play]

4. condition 包含一些用于条件判断的函数。       回到目录

import "github.com/duke-git/lancet/v2/condition"

函数列表:

  • Bool : 返回传入参数的 bool 值。 [doc] [play]
  • And : 逻辑且操作,当切仅当 a 和 b 都为 true 时返回 true。 [doc] [play]
  • Or : 逻辑或操作,当切仅当 a 和 b 都为 false 时返回 false。 [doc] [play]
  • Xor : 逻辑异或操作,a 和 b 相同返回 false,a 和 b 不相同返回 true [doc] [play]
  • Nor : 异或的取反操作。 [doc] [play]
  • Xnor : 如果 a 和 b 都是真的或 a 和 b 均是假的,则返回 true。 [doc] [play]
  • Nand : 如果 a 和 b 都为真,返回 false,否则返回 true [doc] [play]
  • TernaryOperator : 三元运算符。 [doc] [play]

5. convertor 转换器包支持一些常见的数据类型转换。       回到目录

import "github.com/duke-git/lancet/v2/convertor"

函数列表:

  • ColorHexToRGB : 颜色值十六进制转 rgb。 [doc] [play]
  • ColorRGBToHex : 颜色值 rgb 转十六进制。 [doc] [play]
  • ToBool : 字符串转布尔类型,使用 strconv.ParseBool。 [doc] [play]
  • ToBytes : interface 转字节切片。 [[doc](https://github.com/duke-git/lancet/blob/main/docs/api/packages/convertor.

Extension points exported contracts — how you extend this code

Comparator (Interface)
Comparator is for comparing two values [5 implementers]
constraints/constraints.go
BackoffStrategy (Interface)
BackoffStrategy is an interface that defines a method for calculating backoff intervals. [5 implementers]
retry/retry.go
ResettableIterator (Interface)
ResettableIterator supports to reset the iterator [2 implementers]
iterator/iterator.go
CurryFn (FuncType)
CurryFn is for make curry function
function/function.go
Enum (Interface)
Enum defines a common enum interface.
enum/enum.go
SetFileFunc (FuncType)
(no doc)
netutil/http.go
Option (FuncType)
(no doc)
system/os.go
RetryFunc (FuncType)
RetryFunc is function that retry executes
retry/retry.go

Core symbols most depended-on inside this repo

Equal
called by 1821
internal/assert.go
NewAssert
called by 801
internal/assert.go
New
called by 140
function/function.go
IsNil
called by 126
internal/assert.go
Set
called by 107
iterator/iterator.go
Error
called by 98
xerror/xerror.go
ValueOf
called by 88
datastructure/list/list.go
Kind
called by 76
structs/field.go

Shape

Function 2,292
Method 455
Struct 152
Interface 10
FuncType 6
TypeAlias 6

Languages

Go100%

Modules by API surface

slice/slice_test.go100 symbols
slice/slice_example_test.go94 symbols
slice/slice.go89 symbols
strutil/string_test.go49 symbols
strutil/string.go49 symbols
cryptor/crypto_example_test.go49 symbols
validator/validator_test.go48 symbols
validator/validator.go48 symbols
strutil/string_example_test.go48 symbols
maputil/map_example_test.go48 symbols
validator/validator_example_test.go47 symbols
datetime/datetime.go47 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

Dependencies from manifests, versioned

golang.org/x/expv0.0.0-2022120815203 · 1×
golang.org/x/textv0.9.0 · 1×
vitepress1.2.3 · 1×

For agents

$ claude mcp add lancet \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact