Skip to content

Latest commit

 

History

History
2037 lines (1894 loc) · 138 KB

README_zh-CN.md

File metadata and controls

2037 lines (1894 loc) · 138 KB

Go version Release GoDoc Go Report Card test codecov License

lancet(柳叶刀)是一个全面、高效、可复用的go语言工具函数库。 lancet受到了java apache common包和lodash.js的启发。

特性

  • 👏 全面、高效、可复用。
  • 💪 600+常用 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.3。
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]

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] [play]
  • ToChar : 字符串转字符切片。 [doc] [play]
  • ToChannel : 将切片转为只读 channel。 [doc] [play]
  • ToFloat : 将 interface 转成 float64 类型,如果参数无法转换,会返回 0.0 和 error。 [doc] [play]
  • ToInt : 将 interface 转成 int64 类型,如果参数无法转换,会返回 0 和 error。 [doc] [play]
  • ToJson : 将 interface 转成 json 字符串,如果参数无法转换,会返回""和 error。 [doc] [play]
  • ToMap : 将切片转为 map。 [doc] [play]
  • ToPointer : 返回传入值的指针。 [doc] [play]
  • ToString : 将值转换为字符串,对于数字、字符串、[]byte,将转换为字符串。 对于其他类型(切片、映射、数组、结构)将调用 json.Marshal。 [doc] [play]
  • StructToMap : 将 struct 转成 map,只会转换 struct 中可导出的字段。 [doc] [play]
  • MapToSlice : map 中 key 和 value 执行函数 iteratee 后,转为切片。 [doc] [play]
  • EncodeByte : 将传入的 data 编码成字节切片。 [doc] [play]
  • DecodeByte : 解码字节切片到目标对象,目标对象需要传入一个指针实例。 [doc] [play]
  • DeepClone : 创建一个传入值的深拷贝, 无法克隆结构体的非导出字段。 [doc] [play]
  • CopyProperties : 拷贝不同结构体之间的同名字段。 [doc] [play]
  • ToInterface : 将反射值转换成对应的 interface 类型。 [doc] [play]
  • Utf8ToGbk : utf8 编码转 GBK 编码。 [doc] [play]
  • GbkToUtf8 : GBK 编码转 utf8 编码。 [doc] [play]
  • ToStdBase64 : 将值转换为StdBase64编码的字符串。 [doc]
  • ToUrlBase64 : 将值转换为url Base64编码的字符串。 [doc]
  • ToRawStdBase64 : 将值转换为RawStdBase64编码的字符串。 [doc]
  • ToRawUrlBase64 : 将值转换为RawUrlBase64编码的字符串。 [doc]

6. cryptor 加密包支持数据加密和解密,获取 md5,hash 值。支持 base64, md5, hmac, aes, des, rsa。       回到目录

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

函数列表:

  • AesEcbEncrypt : 使用 AES ECB 算法模式加密数据。 [doc] [play]
  • AesEcbDecrypt : 使用 AES ECB 算法模解密数据。 [doc] [play]
  • AesCbcEncrypt : 使用 AES CBC 算法模式加密数据。 [doc] [play]
  • AesCbcDecrypt : 使用 AES CBC 算法模式解密数据。 [doc] [play]
  • AesCtrCrypt : 使用 AES CTR 算法模式加密/解密数据。 [doc] [play]
  • AesCfbEncrypt : 使用 AES CFB 算法模式加密数据。 [doc] [play]
  • AesCfbDecrypt : 使用 AES CFB 算法模式解密数据。 [doc] [play]
  • AesOfbEncrypt : 使用 AES OFB 算法模式加密数据。 [doc] [play]
  • AesOfbDecrypt : 使用 AES OFB 算法模式解密数据。 [doc] [play]
  • Base64StdEncode : 将字符串 base64 编码。 [doc] [play]
  • Base64StdDecode : 解码 base64 字符串。 [doc] [play]
  • DesEcbEncrypt : 使用 DES ECB 算法模式加密数据。 [doc] [play]
  • DesEcbDecrypt : 使用 DES ECB 算法模解密数据。 [doc] [play]
  • DesCbcEncrypt : 使用 DES CBC 算法模式加密数据。 [doc] [play]
  • DesCbcDecrypt : 使用 DES CBC 算法模式解密数据。 [doc] [play]
  • DesCtrCrypt : 使用 DES CTR 算法模式加密/解密数据。 [doc] [play]
  • DesCfbEncrypt : 使用 DES CFB 算法模式加密数据。 [doc] [play]
  • DesCfbDecrypt : 使用 DES CFB 算法模式解密数据。 [doc] [play]
  • DesOfbEncrypt : 使用 DES OFB 算法模式加密数据。 [doc] [play]
  • DesOfbDecrypt : 使用 DES OFB 算法模式解密数据。 [doc] [play]
  • HmacMd5 : 返回字符串 md5 hmac 值。 [doc] [play]
  • HmacMd5WithBase64 : 获取字符串 md5 hmac base64 字符串值。 [doc] [doc]
  • HmacSha1 : 返回字符串 sha1 hmac 值。 [doc] [play]
  • HmacSha1WithBase64 : 获取字符串的 sha1 base64 值。 [doc] [play]
  • HmacSha256 : 返回字符串 sha256 hmac 值。 [doc] [play]
  • HmacSha256WithBase64 : 获取字符串 sha256 hmac base64 值。 [doc] [play]
  • HmacSha512 : 返回字符串 sha256 hmac 值。 [doc] [play]
  • HmacSha512WithBase64 : 获取字符串 sha512 hmac base64 值。 [doc] [play]
  • Md5Byte : 返回 byte slice 的 md5 值. [doc] [play]
  • Md5ByteWithBase64 : 获取 byte slice 的 md5 base64 值。 [doc] [play]
  • Md5String : 返回字符串 md5 值。 [doc] [play]
  • Md5StringWithBase64 : 获取字符串 md5 base64 值。 [doc] [play]
  • Md5File : 返回文件 md5 值。 [doc]
  • Sha1 : 返回字符串 sha1 哈希值。 [doc] [play]
  • Sha1WithBase64 : 获取字符串 sha1 base64 值。 [doc] [play]
  • Sha256 :返回字符串 sha256 哈希值。 [doc] [play]
  • Sha256WithBase64 : 获取字符串 sha256 base64 值。 [doc] [play]
  • Sha512 : 返回字符串 sha512 哈希值。 [doc] [play]
  • Sha512WithBase64 : 获取字符串 sha512 base64 值。 [doc] [play]
  • GenerateRsaKey : 在当前目录下创建 rsa 私钥文件和公钥文件。 [doc] [play]
  • RsaEncrypt : 用公钥文件 ras 加密数据。 [doc] [play]
  • RsaDecrypt : 用私钥文件 rsa 解密数据。 [doc] [play]
  • GenerateRsaKeyPair : 创建rsa公钥私钥和key。 [doc] [play]
  • RsaEncryptOAEP : rsa OAEP加密。 [doc] [play]
  • RsaDecryptOAEP : rsa OAEP解密。 [doc] [play]

7. datetime 日期时间处理包,格式化日期,比较日期。       回到目录

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

函数列表:

  • AddDay : 将日期加/减天数。 [doc] [play]
  • AddHour : 将日期加/减小时数。 [doc] [play]
  • AddMinute : 将日期加/减分钟数。 [doc] [play]
  • AddYear : 将日期加/减分年数。 [doc] [play]
  • BeginOfMinute : 返回指定时间的分钟开始时间。 [doc] [play]
  • BeginOfHour : 返回指定时间的小时开始时间。 [doc] [play]
  • BeginOfDay : 返回指定时间的当天开始时间。 [doc] [play]
  • BeginOfWeek : 返回指定时间的每周开始时间,默认开始时间星期日。 [doc] [play]
  • BeginOfMonth : 返回指定时间的当月开始时间。 [doc] [play]
  • BeginOfYear : 返回指定时间的当年开始时间。 [doc] [play]
  • EndOfMinute : 返回指定时间的分钟结束时间。 [doc] [play]
  • EndOfHour : 返回指定时间的小时结束时间。 [doc] [play]
  • EndOfDay : 返回指定时间的当天结束时间。 [doc] [play]
  • EndOfWeek : 返回指定时间的星期结束时间,默认结束时间星期六。 [doc] [play]
  • EndOfMonth : 返回指定时间的月份结束时间。 [doc] [play]
  • EndOfYear : 返回指定时间的年份结束时间。 [doc] [play]
  • GetNowDate : 获取当天日期,返回格式:yyyy-mm-dd。 [doc] [play]
  • GetNowTime : 获取当时时间,返回格式:hh:mm:ss。 [doc] [play]
  • GetNowDateTime : 获取当时日期和时间,返回格式:yyyy-mm-dd hh:mm:ss。 [doc] [play]
  • GetTodayStartTime : 返回当天开始时间, 格式: yyyy-mm-dd 00:00:00。 [doc] [play]
  • GetTodayEndTime : 返回当天结束时间,格式: yyyy-mm-dd 23:59:59。 [doc] [play]
  • GetZeroHourTimestamp : 获取零时时间戳(timestamp of 00:00)。 [doc] [play]
  • GetNightTimestamp : 获取午夜时间戳(timestamp of 23:59)。 [doc] [play]
  • FormatTimeToStr : 将日期格式化成字符串。 [doc] [play]
  • FormatStrToTime : 将字符串格式化成时间。 [doc] [play]
  • NewUnix : 创建一个 unix 时间戳。 [doc] [play]
  • NewUnixNow : 创建一个当前时间的 unix 时间戳。 [doc] [play]
  • NewFormat : 创建一个 yyyy-mm-dd hh:mm:ss 格式时间字符串的 unix 时间戳。 [doc] [play]
  • NewISO8601 : 创建一个 iso8601 格式时间字符串的 unix 时间戳。 [doc] [play]
  • ToUnix : 返回 unix 时间戳。 [doc] [play]
  • ToFormat : 返回格式'yyyy-mm-dd hh:mm:ss'的日期字符串。 [doc] [play]
  • ToFormatForTpl : 返回 tpl 格式指定的日期字符串。 [doc] [play]
  • ToIso8601 : 返回 iso8601 日期字符串。 [doc] [play]
  • IsLeapYear :验证是否是闰年。 [doc] [play]
  • BetweenSeconds : 返回两个时间的间隔秒数。 [doc] [doc]
  • DayOfYear : 返回参数日期是一年中的第几天。 [doc] [play]
  • IsWeekend : 判断日期是否是周末。 [doc] [play]
  • NowDateOrTime : 根据指定的格式和时区返回当前时间字符串。 [doc] [play]
  • Timestamp : 返回当前秒级时间戳。 [doc] [play]
  • TimestampMilli : 返回当前毫秒级时间戳。 [doc] [play]
  • TimestampMicro : 返回当前微秒级时间戳。 [doc] [play]
  • TimestampNano : 返回当前纳秒级时间戳。 [doc] [play]

8. datastructure 包含一些普通的数据结构实现。例如:list, linklist, stack, queue, set, tree, graph。       回到目录

import list "github.com/duke-git/lancet/v2/datastructure/list"
import copyonwritelist "github.com/duke-git/lancet/v2/datastructure/copyonwritelist"
import link "github.com/duke-git/lancet/v2/datastructure/link"
import stack "github.com/duke-git/lancet/v2/datastructure/stack"
import queue "github.com/duke-git/lancet/v2/datastructure/queue"
import set "github.com/duke-git/lancet/v2/datastructure/set"
import tree "github.com/duke-git/lancet/v2/datastructure/tree"
import heap "github.com/duke-git/lancet/v2/datastructure/heap"
import hashmap "github.com/duke-git/lancet/v2/datastructure/hashmap"

函数列表:

  • List : 线性表结构, 用切片实现。 [doc]
  • CopyOnWriteList : 是一个线程安全的 List 实现,底层使用 go 切片。 [doc]
  • Link : 链表解构, 包括单链表和双向链表。 [doc]
  • Stack : 栈结构(fifo), 包括数组栈和链表栈。 [doc]
  • Queue : 队列结构(filo), 包括数组队列,链表队列,循环队列,优先级队列。 [doc]
  • Set : 集合(set)结构。 [doc]
  • Tree : 二叉搜索树。 [doc]
  • Heap : 二叉 max 堆。 [doc]
  • Hashmap : 哈希映射。 [doc]

9. fileutil 包含文件基本操作。       回到目录

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

函数列表:

  • ClearFile : 清空文件内容。 [doc] [play]
  • CreateFile : 创建文件,创建成功返回 true, 否则返回 false。 [doc] [play]
  • CreateDir : 创建嵌套目录,例如/a/, /a/b/。 [doc] [play]
  • CopyFile : 拷贝文件,会覆盖原有的文件。 [doc] [play]
  • CopyDir : 拷贝目录。 [doc] [play]
  • FileMode : 获取文件 mode 信息。 [doc] [play]
  • MiMeType : 获取文件 mime 类型, 参数的类型必须是 string 或者*os.File。 [doc] [play]
  • IsExist : 判断文件或目录是否存在。 [doc] [play]
  • IsLink : 判断文件是否是符号链接。 [doc] [play]
  • IsDir : 判断参数是否是目录。 [doc] [play]
  • ListFileNames : 返回目录下所有文件名。 [doc] [play]
  • RemoveFile : 删除文件。 [doc] [play]
  • ReadFileToString : 读取文件内容并返回字符串。 [doc] [play]
  • ReadFileByLine : 按行读取文件内容,返回字符串切片包含每一行。 [doc] [play]
  • Zip : zip 压缩文件, 参数可以是文件或目录。 [doc] [play]
  • ZipAppendEntry : 通过将单个文件或目录追加到现有的 zip 文件。 [doc]
  • UnZip : zip 解压缩文件并保存在目录中。 [doc] [play]
  • CurrentPath : 返回当前位置的绝对路径。 [doc] [play]
  • IsZipFile : 判断文件是否是 zip 压缩文件。 [doc] [play]
  • FileSize : 返回文件字节大小。 [doc] [play]
  • MTime : 返回文件修改时间(unix timestamp)。 [doc] [play]
  • Sha : 返回文件 sha 值。 [doc] [play]
  • ReadCsvFile : 读取 csv 文件内容到切片。 [doc] [play]
  • WriteCsvFile : 向csv文件写入切片数据。 [doc]
  • WriteMapsToCsv : 将map切片写入csv文件中。 [doc] [play]
  • WriteBytesToFile : 将 bytes 写入文件。 [doc] [play]
  • WriteStringToFile : 将字符串写入文件。 [doc] [play]
  • ReadFile : 读取文件或者URL。 [doc]
  • ChunkRead : 从文件的指定偏移读取块并返回块内所有行。 [doc] [play]
  • ParallelChunkRead : 并行读取文件并将每个块的行发送到指定通道。 [doc] [play]

10. formatter 格式化器包含一些数据格式化处理方法。       回到目录

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

函数列表:

  • Comma : 用逗号每隔 3 位分割数字/字符串,支持前缀添加符号。 [doc] [play]
  • Pretty : 返回 pretty JSON 字符串。 [doc] [play]
  • PrettyToWriter : Pretty encode 数据到 writer。 [doc] [play]
  • DecimalBytes : 返回十进制标准(以 1000 为基数)下的可读字节单位字符串。precision 参数指定小数点后的位数,默认为 4。 [doc] [play]
  • BinaryBytes : 返回 binary 标准(以 1024 为基数)下的可读字节单位字符串。precision 参数指定小数点后的位数,默认为 4。 [doc] [play]
  • ParseDecimalBytes : 将字节单位字符串转换成其所表示的字节数(以 1000 为基数)。 [doc] [play]
  • ParseBinaryBytes : 将字节单位字符串转换成其所表示的字节数(以 1024 为基数)。 [doc] [play]

11. function 函数包控制函数执行流程,包含部分函数式编程。       回到目录

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

函数列表:

  • After : 创建一个函数,当该函数被调用 n 或更多次之后将执行传入的函数。 [doc] [play]
  • Before : 创建一个函数,当该函数被调用不超过 n 次时,将执行执行传入的函数。 [doc] [play]
  • CurryFn : 创建柯里化函数。 [doc] [play]
  • Compose : 从右至左组合函数列表 fnList,返回组合后的函数。 [doc] [play]
  • Delay : 延迟 delay 时间后调用函数。 [doc] [play]
  • Debounced : 创建一个 debounced 函数,该函数延迟调用 fn 直到自上次调用 debounced 函数后等待持续时间过去。 [doc] [play]
  • Schedule : 每次持续时间调用函数,直到关闭返回的 channel。 [doc] [play]
  • Pipeline : 从右至左执行函数列表。 [doc] [play]
  • AcceptIf : AcceptIf函数会返回另一个函数,该函数的签名与apply函数相同,但同时还会包含一个布尔值来表示成功或失败。 [doc] [play]
  • And : 返回一个复合谓词判断函数,该判断函数表示一组谓词的逻辑and操作。 [doc] [play]
  • Or : 返回一个复合谓词判断函数,该判断函数表示一组谓词的逻辑or操作。 [doc] [play]
  • Negate : 返回一个谓词函数,该谓词函数表示当前谓词的逻辑否定。 [doc] [play]
  • Nor : 返回一个复合谓词判断函数,该判断函数表示一组谓词的逻辑非或nor的操作。 [doc] [play]
  • Nand : 返回一个复合谓词判断函数,该判断函数表示一组谓词的逻辑非与nand的操作。 [doc] [play]
  • Xnor : 返回一个复合谓词判断函数,该判断函数表示一组谓词的逻辑异或xnor的操作。 [doc] [play]
  • Watcher : Watcher 用于记录代码执行时间。可以启动/停止/重置手表定时器。获取函数执行的时间。 [doc] [play]

12. maputil 包括一些操作 map 的函数。       回到目录

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

函数列表:

  • MapTo : 快速将 map 或者其他类型映射到结构体或者指定类型。 [doc] [play]
  • ForEach : 对 map 中的每对 key 和 value 执行 iteratee 函数。 [doc] [play]
  • Filter : 迭代 map 中的每对 key 和 value,返回 map,其中的 key 和 value 符合 predicate 函数。 [doc] [play]
  • FilterByKeys : 迭代 map, 返回一个新 map,其 key 都是给定的 key 值。 [doc] [play]
  • FilterByValues : 迭代 map, 返回一个新 map,其 value 都是给定的 value 值。 [doc] [play]
  • OmitBy : Filter 的反向操作, 迭代 map 中的每对 key 和 value, 删除符合 predicate 函数的 key, value, 返回新 map。 [doc] [play]
  • OmitByKeys : FilterByKeys 的反向操作, 迭代 map, 返回一个新 map,其 key 不包括给定的 key 值。 [doc] [play]
  • OmitByValues : FilterByValues 的反向操作, 迭代 map, 返回一个新 map,其 value 不包括给定的 value 值。 [doc] [play]
  • Intersect : 多个 map 的交集操作。 [doc] [play]
  • Keys : 返回 map 中所有 key 组成的切片。 [doc] [play]
  • KeysBy : 创建一个切片,其元素是每个 map 的 key 调用 mapper 函数的结果。 [doc] [play]
  • Merge : 合并多个 map, 相同的 key 会被之后的 key 覆盖。 [doc] [play]
  • Minus : 返回一个 map,其中的 key 存在于 mapA,不存在于 mapB。 [doc] [play]
  • Values : 返回 map 中所有 values 组成的切片 [doc] [play]
  • ValuesBy : 创建一个切片,其元素是每个 map 的 value 调用 mapper 函数的结果。 [doc] [play]
  • MapKeys : 操作 map 的每个 key,然后转为新的 map。 [doc] [play]
  • MapValues : 操作 map 的每个 value,然后转为新的 map。 [doc] [play]
  • Entries : 将 map 转换为键/值对切片。 [doc] [play]
  • FromEntries : 基于键/值对的切片创建 map。 [doc] [play]
  • Transform : 将 map 转换为其他类型的 map。 [doc] [play]
  • IsDisjoint : 验证两个 map 是否具有不同的 key。 [doc] [play]
  • HasKey : 检查 map 是否包含某个 key。 [doc] [play]
  • NewConcurrentMap : ConcurrentMap 协程安全的 map 结构。 [doc] [play]
  • ConcurrentMap_Set : 在 map 中设置 key 和 value。 [doc] [play]
  • ConcurrentMap_Get : 根据 key 获取 value, 如果不存在 key,返回零值。 [doc] [play]
  • ConcurrentMap_GetOrSet : 返回键的现有值(如果存在),否则,设置 key 并返回给定值。 [doc] [play]
  • ConcurrentMap_Delete : 删除 key。 [doc] [play]
  • ConcurrentMap_GetAndDelete :获取 key,然后删除。 [doc] [play]
  • ConcurrentMap_Has : 验证是否包含 key。 [doc] [play]
  • ConcurrentMap_Range : 为 map 中每个键和值顺序调用迭代器。 如果 iterator 返回 false,则停止迭代。 [doc] [play]

13. mathutil 包实现了一些数学计算的函数。       回到目录

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

函数列表:

  • Average :计算平均数,可能需要对结果调用 RoundToFloat 方法四舍五入。 [doc] [play]
  • Exponent : 指数计算(x 的 n 次方)。 [doc] [play]
  • Fibonacci :计算斐波那契数列的第 n 个数。 [doc] [play]
  • Factorial : 计算阶乘。 [doc] [play]
  • Max : 返回参数中的最大数。 [doc] [play]
  • MaxBy : 使用给定的比较器函数返回切片的最大值。 [doc] [play]
  • Min : 返回参数中的最小数。 [doc] [play]
  • MinBy : 使用给定的比较器函数返回切片的最小值。 [doc] [play]
  • Percent : 计算百分比,可以指定保留 n 位小数。 [doc] [play]
  • RoundToFloat : 四舍五入,保留 n 位小数,返回 float64。 [doc] [play]
  • RoundToString : 四舍五入,保留 n 位小数,返回 string。 [doc] [play]
  • TruncRound : 截短 n 位小数(不进行四舍五入)。 [doc] [play]
  • CeilToFloat : 向上舍入(进一法),保留n位小数。 [doc] [play]
  • CeilToString : 向上舍入(进一法),保留n位小数,返回字符串。 [doc] [play]
  • FloorToFloat : 向下舍入(去尾法),保留n位小数。 [doc] [play]
  • FloorToString : 向下舍入(去尾法),保留n位小数,返回字符串。 [doc] [play]
  • Range : 根据指定的起始值和数量,创建一个数字切片。 [doc] [play]
  • RangeWithStep : 根据指定的起始值,结束值,步长,创建一个数字切片。 [doc] [play]
  • AngleToRadian : 将角度值转为弧度值。 [doc] [play]
  • RadianToAngle : 将弧度值转为角度值。 [doc] [play]
  • PointDistance : 计算两个坐标点的距离。 [doc] [play]
  • IsPrime : 判断质数。 [doc] [play]
  • GCD : 求最大公约数。 [doc] [play]
  • LCM : 求最小公倍数。 [doc] [play]
  • Cos : 计算弧度的余弦值。 [doc] [play]
  • Sin : 计算弧度的正弦值。 [doc] [play]
  • Log : 计算以 base 为底 n 的对数。 [doc] [play]
  • Sum : 求传入参数之和。 [doc] [play]
  • Abs : 求绝对值。 [doc] [play]
  • Div : 除法运算。 [doc] [play]

14. netutil 网络包支持获取 ip 地址,发送 http 请求。       回到目录

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

函数列表:

  • ConvertMapToQueryString : 将 map 转换成 http 查询字符串。 [doc] [play]
  • EncodeUrl : 编码 url query string 的值(?a=1&b=[2] -> ?a=1&b=%5B2%5D)。 [doc] [play]
  • GetInternalIp : 获取内部 ipv4。 [doc] [play]
  • GetIps : 获取系统 ipv4 地址列表。 [doc] [play]
  • GetMacAddrs : 获取系统 mac 地址列。 [doc] [play]
  • GetPublicIpInfo : 获取公网 ip 信息. [doc] [play]
  • GetRequestPublicIp : 获取 http 请求 ip。 [doc] [play]
  • IsPublicIP : 判断 ip 是否是公共 ip。 [doc] [play]
  • IsInternalIP : 判断 ip 是否是局域网 ip。 [doc] [play]
  • HttpRequest : 用于抽象 HTTP 请求实体的结构。 [doc] [play]
  • HttpClient : 用于发送 HTTP 请求。 [doc] [play]
  • SendRequest : 发送 http 请求。 [doc] [play]
  • DecodeResponse : 解析 http 响应体到目标结构体。 [doc] [play]
  • StructToUrlValues : 将结构体转为 url values, 仅转化结构体导出字段并且包含json tag。 [doc] [play]
  • HttpGetdeprecated : 发送 http get 请求(已弃用:SendRequest 代替)。 [doc]
  • HttpDeletedeprecated : 发送 http delete 请求(已弃用:SendRequest 代替)。 [doc]
  • HttpPostdeprecated : 发送 http post 请求(已弃用:SendRequest 代替)。 [doc]
  • HttpPutdeprecated : 发送 http put 请求(已弃用:SendRequest 代替)。 [doc]
  • HttpPatchdeprecated : 发送 http patch 请求(已弃用:SendRequest 代替)。 [doc]
  • ParseHttpResponse : 解析 http 响应体到目标结构体。 [doc]
  • DownloadFile : 从指定的 server 地址下载文件。 [doc]
  • UploadFile : 将文件上传指定的 server 地址。 [doc]
  • IsPingConnected : 检查能否 ping 通主机。 [doc] [play]
  • IsTelnetConnected : 检查能否 telnet 到主机。 [doc] [play]

15. pointer 包支持一些指针类型的操作。       回到目录

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

函数列表:

  • ExtractPointer : 返回传入 interface 的底层值。 [doc] [play]
  • Of : 返回传入参数的指针值。 [doc] [play]
  • Unwrap : 返回传入指针指向的值。 [doc] [play
  • UnwarpOr : 返回指针的值,如果指针为零值,则返回 fallback。 [doc] [play]
  • UnwarpOrDefault : 返回指针的值,如果指针为零值,则返回相应零值。 [doc] [play]

16. random 随机数生成器包,可以生成随机[]bytes, int, string。       回到目录

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

函数列表:

  • RandBytes : 生成随机字节切片。 [doc] [play]
  • RandInt : 生成随机 int, 范围[min, max)。 [doc] [play]
  • RandString : 生成给定长度的随机字符串,只包含字母(a-zA-Z)。 [doc] [play]
  • RandUpper : 生成给定长度的随机大写字母字符串(A-Z)。 [doc] [play]
  • RandLower : 生成给定长度的随机小写字母字符串(a-z)。 [doc] [play]
  • RandNumeral : 生成给定长度的随机数字字符串(0-9)。 [doc] [play]
  • RandNumeralOrLetter : 生成给定长度的随机字符串(数字+字母)。 [doc] [play]
  • UUIdV4 : 生成 UUID v4 字符串。 [doc] [play]
  • RandUniqueIntSlice : 生成一个不重复的长度为 n 的随机 int 切片。 [doc] [play]
  • RandSymbolChar : 生成给定长度的随机符号字符串。 [doc] [play]
  • RandFloat : 生成随机float64数字,可以指定范围和精度。 [doc] [play]
  • RandFloats : 生成随机float64数字切片,可以指定长度,范围和精度. [doc] [play]

17. retry 重试执行函数直到函数运行成功或被 context cancel。       回到目录

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

函数列表:

  • Context : 设置重试 context 参数。 [doc] [play]
  • Retry : 重试执行函数 retryFunc,直到函数运行成功,或被 context 取消。 [doc] [play]
  • RetryFunc : 重试执行的函数。 [doc] [play]
  • RetryDuration : 设置重试间隔时间,默认 3 秒。 [doc] [play]
  • RetryTimes : 设置重试次数,默认 5。 [doc] [play]
  • BackoffStrategy : 定义计算退避间隔的方法的接口。 [doc]
  • RetryWithCustomBackoff : 设置自定义退避策略。 [doc]
  • RetryWithLinearBackoff : 设置线性策略退避。 [doc]
  • RetryWithExponentialWithJitterBackoff : 设置指数策略退避。 [doc]

18. slice 包含操作切片的方法集合。        回到目录

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

函数列表:

  • AppendIfAbsent : 当前切片中不包含值时,将该值追加到切片中。 [doc] [play]
  • Contain : 判断 slice 是否包含 value。 [doc] [play]
  • ContainBy : 根据 predicate 函数判断切片是否包含某个值。 [doc] [play]
  • ContainSubSlice : 判断 slice 是否包含 subslice。 [doc] [play]
  • Chunk : 按照 size 参数均分 slice。 [doc] [play]
  • Compact : 去除 slice 中的假值(false values are false, nil, 0, "")。 [doc] [play]
  • Concat : 合并多个 slices 到一个 slice 中。 [doc] [play]
  • Count : 返回切片中指定元素的个数。 [doc] [play]
  • CountBy : 遍历切片,对每个元素执行函数 predicate. 返回符合函数返回值为 true 的元素的个数。 [doc] [play]
  • Difference : 创建一个切片,其元素不包含在另一个给定切片中。 [doc] [play]
  • DifferenceBy : 将两个 slice 中的每个元素调用 iteratee 函数,并比较它们的返回值,如果不相等返回在 slice 中对应的值。 [doc] [play]
  • DifferenceWith : 接受比较器函数,该比较器被调用以将切片的元素与值进行比较。 结果值的顺序和引用由第一个切片确定。 [doc] [play]
  • DeleteAt : 删除切片中指定索引到的元素。 [doc] [play]
  • DeleteRange : 删除切片中指定开始索引到结束索引的元素。 [doc] [play]
  • Drop : 从切片头部删除 n 个元素。 [doc] [play]
  • DropRight : 从切片尾部删除 n 个元素。 [doc] [play]
  • DropWhile : 从切片的头部删除 n 个元素,这个 n 个元素满足 predicate 函数返回 true。 [doc] [play]
  • DropRightWhile : 从切片的尾部删除 n 个元素,这个 n 个元素满足 predicate 函数返回 true。 [doc] [play]
  • Equal : 检查两个切片是否相等,相等条件:切片长度相同,元素顺序和值都相同。 [doc] [play]
  • EqualWith : 检查两个切片是否相等,相等条件:对两个切片的元素调用比较函数 comparator,返回 true。 [doc] [play]
  • Every : 如果切片中的所有值都通过谓词函数,则返回 true。 [doc] [play]
  • Filter : 返回切片中通过 predicate 函数真值测试的所有元素。 [doc] [play]
  • FilterMap : 返回一个将 filter 和 map 操作应用于给定切片的切片。 [doc] [play]
  • Finddeprecated : 遍历切片的元素,返回第一个通过 predicate 函数真值测试的元素。 [doc] [play]
  • FindBy : 遍历切片的元素,返回第一个通过 predicate 函数真值测试的元素。 [doc] [play]
  • FindLastdeprecated : 从头到尾遍历 slice 的元素,返回最后一个通过 predicate 函数真值测试的元素。 [doc] [play]
  • FindLastBy : 从遍历 slice 的元素,返回最后一个通过 predicate 函数真值测试的元素。 [doc] [play]
  • Flatten : 将多维切片展平一层。 [doc] [play]
  • FlattenDeep : 将多维切片递归展平到一层。 [doc] [play]
  • FlatMap : 将切片转换为其它类型切片。 [doc] [play]
  • ForEach : 遍历切片的元素并为每个元素调用 iteratee 函数。 [doc] [play]
  • ForEachWithBreak : 遍历切片的元素并为每个元素调用 iteratee 函数,当 iteratee 函数返回 false 时,终止遍历。 [doc] [play]
  • GroupBy : 迭代切片的元素,每个元素将按条件分组,返回两个切片。 [doc] [play]
  • GroupWith : 创建一个 map,key 是 iteratee 遍历 slice 中的每个元素返回的结果。值是切片元素。 [doc] [play]
  • IntSlicedeprecated : 将接口切片转换为 int 切片。 [doc] [play]
  • InterfaceSlicedeprecated : 将值转换为 interface 切片。 [doc] [play]
  • Intersection : 返回多个切片的交集。 [doc] [play]
  • InsertAt : 将元素插入到索引处的切片中。 [doc] [play]
  • IndexOf : 返回在切片中找到值的第一个匹配项的索引,如果找不到值,则返回-1。 [doc] [play]
  • LastIndexOf : 返回在切片中找到最后一个值的索引,如果找不到该值,则返回-1。 [doc] [play]
  • Map : 对 slice 中的每个元素执行 map 函数以创建一个新切片。 [doc] [play]
  • Merge : 合并多个切片(不会消除重复元素)。 [doc] [play]
  • Reverse : 反转切片中的元素顺序。 [doc] [play]
  • Reducedeprecated : 将切片中的元素依次运行 iteratee 函数,返回运行结果。(废弃:建议使用 ReduceBy) [doc] [play]
  • ReduceBy : 对切片元素执行 reduce 操作。 [doc] [play]
  • ReduceRight : 类似 ReduceBy 操作,迭代切片元素顺序从右至左。 [doc] [play]
  • Replace : 返回切片的副本,其中前 n 个不重叠的 old 替换为 new。 [doc] [play]
  • ReplaceAll : 返回切片的副本,将其中 old 全部替换为 new。 [doc] [play]
  • Repeat : 创建一个切片,包含 n 个传入的 item。 [doc] [play]
  • Shuffle : 随机打乱切片中的元素顺序。 [doc] [play]
  • IsAscending : 检查切片元素是否按升序排列。 [doc] [play]
  • IsDescending : 检查切片元素是否按降序排列。 [doc] [play]
  • IsSorted : 检查切片元素是否是有序的(升序或降序)。 [doc] [play]
  • IsSortedByKey : 通过 iteratee 函数,检查切片元素是否是有序的。 [doc] [play]
  • Sort : 对任何有序类型(数字或字符串)的切片进行排序,使用快速排序算法。 [doc] [play]
  • SortBy : 按照 less 函数确定的升序规则对切片进行排序。排序不保证稳定性。 [doc] [play]
  • SortByFielddeprecated : 按字段对结构切片进行排序。slice 元素应为 struct,字段类型应为 int、uint、string 或 bool。 [doc] [play]
  • Some : 如果列表中的任何值通过谓词函数,则返回 true。 [doc] [play]
  • StringSlicedeprecated : 将接口切片转换为字符串切片。 [doc] [play]
  • SymmetricDifference : 返回一个切片,其中的元素存在于参数切片中,但不同时存储在于参数切片中(交集取反)。 [doc] [play]
  • ToSlice : 将可变参数转为切片。 [doc] [play]
  • ToSlicePointer : 将可变参数转为指针切片。 [doc] [play]
  • Unique : 删除切片中的重复元素。 [doc] [play]
  • UniqueBy : 对切片的每个元素调用 iteratee 函数,然后删除重复元素。 [doc] [play]
  • Union : 合并多个切片。 [doc] [play]
  • UnionBy : 对切片的每个元素调用函数后,合并多个切片。 [doc] [play]
  • UpdateAt : 更新索引处的切片元素。 [doc] [play]
  • Without : 创建一个不包括所有给定值的切片。 [doc] [play] [doc] [play]
  • Join : 用指定的分隔符链接切片元素。 [doc] [play]
  • Partition : 根据给定的predicate判断函数分组切片元素。 [doc] [play]
  • Random : 随机返回切片中元素以及下标, 当切片长度为0时返回下标-1。 [doc] [play]
  • SetToDefaultIf : 根据给定给定的predicate判定函数来修改切片中的元素。 [doc] [play]

19. stream 流,该包仅验证简单的 stream 实现,功能有限。       回到目录

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

函数列表:

  • Of : 创建元素为指定值的 stream。 [doc] [play]
  • FromSlice : 从切片创建 stream。 [doc] [play]
  • FromChannel : 从通道创建 stream。 [doc] [play]
  • FromRange : 指定一个数字范围创建 stream, 范围两端点值都包括在内。. [start, end] [doc] [play]
  • Generate : 创建一个 stream,其中每个元素都由提供的生成器函数生成。 [doc] [play]
  • Concat : 创建一个延迟连接 stream,其元素是第一个 stream 的所有元素,后跟第二个 stream 的全部元素。 [doc] [play]
  • Distinct : 创建并返回一个 stream,用于删除重复的项。 [doc] [play]
  • Filter : 返回一个通过判定函数的 stream。 [doc] [play]
  • Map : 返回一个 stream,该 stream 由将给定函数应用于源 stream 元素的元素组成。 [doc] [play]
  • Peek : 返回一个由源 stream 的元素组成的 stream,并在从生成的 stream 中消耗元素时对每个元素执行所提供的操作。 [doc] [play]
  • Skip : 在丢弃 stream 的前 n 个元素后,返回由源 stream 的其余元素组成的 stream。如果此 stream 包含的元素少于 n 个,则将返回一个空 stream。 [doc] [play]
  • Limit : 返回由源 stream 的元素组成的 stream,该 stream 被截断为长度不超过 maxSize。 [doc] [play]
  • Reverse : 返回元素与源 stream 的顺序相反的 stream。 [doc] [play]
  • Range : 返回一个 stream,该 stream 的元素在从源 stream 的开始(包含)到结束(排除)的范围内。 [doc] [play]
  • Sorted : 返回一个 stream,该 stream 由源 stream 的元素组成,并根据提供的 less 函数进行排序。 [doc] [play]
  • ForEach : 对 stream 的每个元素执行一个操作。 [doc] [play]
  • Reduce : 使用关联累加函数对 stream 的元素执行 reduce 操作,并 reduce 操作结果(如果有)。 [doc] [play]
  • FindFirst : 返回此 stream 的第一个元素,如果 stream 为空,则返回零值和 false。 [doc] [play]
  • FindLast : 返回此 stream 的最后一个元素,如果 stream 为空,则返回零值和 false。 [doc] [play]
  • Max : 根据提供的 less 函数返回 stream 的最大元素。less 函数: a > b [doc] [play]
  • Min : 根据提供的 less 函数返回 stream 的最小元素。less 函数: a < b [doc] [play]
  • AllMatch : 判断 stream 的所有元素是否全部匹配指定判定函数。 [doc] [play]
  • AnyMatch : 判断 stream 是否包含匹配指定判定函数的元素。 [doc] [play]
  • NoneMatch : 判断 stream 的元素是否全部不匹配指定的判定函数。 [doc] [play]
  • Count : 返回 stream 中元素的数量。 [doc] [play]
  • ToSlice : 返回 stream 中的元素切片。 [doc] [play]

20. structs 提供操作 struct, tag, field 的相关函数。       回到目录

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

函数列表:

  • New : Struct结构体的构造函数。 [doc]
  • ToMap : 将一个合法的 struct 对象转换为 map[string]any。 [doc]
  • Fields : 获取一个 struct 对象的属性列表。 [doc]
  • Field : 根据属性名获取一个 struct 对象的属性。 [doc]
  • IsStruct : 判断是否为一个合法的 struct 对象。 [doc]
  • Tag : 获取FieldTag,默认的 tag key 是 json。 [doc]
  • Name : 获取属性名。 [doc]
  • Value : 获取Field属性的值。 [doc]
  • Kind : 获取属性 Kind。 [doc]
  • IsEmbedded : 判断属性是否为嵌入。 [doc]
  • IsExported : 判断属性是否导出。 [doc]
  • IsZero : 判断属性是否为零值。 [doc]
  • IsSlice : 判断属性是否是切片。 [doc]
  • IsTargetType : 判断属性是否是目标类型。 [doc]

21. strutil 包含字符串处理的相关函数。       回到目录

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

函数列表:

  • After : 返回源字符串中指定字符串首次出现时的位置之后的子字符串。 [doc] [play]
  • AfterLast : 返回源字符串中指定字符串最后一次出现时的位置之后的子字符串。 [doc] [play]
  • Before : 返回源字符串中指定字符串第一次出现时的位置之前的子字符串。 [doc] [play]
  • BeforeLast : 返回源字符串中指定字符串最后一次出现时的位置之前的子字符串。 [doc] [play]
  • CamelCase : 将字符串转换为 CamelCase 驼峰式字符串, 非字母和数字会被忽略。 [doc] [play]
  • Capitalize : 将字符串的第一个字符转换为大写。 [doc] [play]
  • ContainsAll : 判断字符串是否包括全部给定的子字符串切片。 [doc] [play]
  • ContainsAny : 判断字符串是否包括给定的子字符串切片中任意一个子字符串。 [doc] [play]
  • IsString : 判断传入参数的数据类型是否为字符串。 [doc] [play]
  • KebabCase : 将字符串转换为 kebab-case 形式字符串, 非字母和数字会被忽略。 [doc] [play]
  • UpperKebabCase : 将字符串转换为大写 KEBAB-CASE 形式字符串, 非字母和数字会被忽略。 [doc] [play]
  • LowerFirst : 将字符串的第一个字符转换为小写形式。 [doc] [play]
  • UpperFirst : 将字符串的第一个字符转换为大写形式。 [doc] [play]
  • Pad : 如果字符串长度短于 size,则在左右两侧填充字符串。 [doc] [play]
  • PadEnd : 如果字符串短于限制大小,则在右侧用给定字符填充字符串。 如果填充字符超出大小,它们将被截断。 [doc] [play]
  • PadStart : 如果字符串短于限制大小,则在左侧用给定字符填充字符串。 如果填充字符超出大小,它们将被截断。 [doc] [play]
  • Reverse : 返回字符顺序与给定字符串相反的字符串。 [doc] [play]
  • SnakeCase : 将字符串转换为 snake_case 形式, 非字母和数字会被忽略。 [doc] [play]
  • UpperSnakeCase : 将字符串转换为大写 SNAKE_CASE 形式, 非字母和数字会被忽略。 [doc] [play]
  • SplitEx : 拆分给定的字符串可以控制结果切片是否包含空字符串。 [doc] [play]
  • Substring : 根据指定的位置和长度截取子字符串。 [doc] [play]
  • Wrap : 用给定字符包裹传入的字符串 [doc] [play]
  • Unwrap : 从另一个字符串中解开一个给定的字符串。 将更改源字符串。 [doc] [play]
  • SplitWords : 将字符串拆分为单词,只支持字母字符单词。 [doc] [play]
  • WordCount : 返回有意义单词的数量,只支持字母字符单词。 [doc] [play]
  • RemoveNonPrintable : 删除字符串中不可打印的字符。 [doc] [play]
  • StringToBytes : 在不分配内存的情况下将字符串转换为字节片。 [doc] [play]
  • BytesToString : 在不分配内存的情况下将字节切片转换为字符串。 [doc] [play]
  • IsBlank : 检查字符串是否为空格或空。 [doc] [play]
  • IsNotBlank : 检查字符串是否不为空。 [doc] [play]
  • HasPrefixAny : 检查字符串是否以指定字符串数组中的任何一个开头。 [doc] [play]
  • HasSuffixAny : 检查字符串是否以指定字符串数组中的任何一个结尾。 [doc] [play]
  • IndexOffset : 将字符串偏移 idxFrom 后,返回字符串中第一个 substr 实例的索引。 [doc] [play]
  • ReplaceWithMap : 返回 string 的副本,以无序的方式被 map 替换,区分大小写。 [doc] [play]
  • Trim : 从字符串的开头和结尾去除空格(或其他字符)。 可选参数 characterMask 指定额外的剥离字符。 [doc] [play]
  • SplitAndTrim : 将字符串 str 按字符串 delimiter 拆分为一个切片,并对该数组的每个元素调用 Trim。忽略 Trim 后为空的元素。 [doc] [play]
  • HideString : 隐藏源字符串中的一些字符。 [doc] [play]
  • RemoveWhiteSpace : 删除字符串中的空格。 [doc] [play]
  • SubInBetween : 获取字符串中指定的起始字符串start和终止字符串end直接的子字符串。 [doc] [play]
  • HammingDistance : 计算两个字符串之间的汉明距离。 [doc] [play]

22. system 包含 os, runtime, shell command 的相关函数。       回到目录

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

函数列表:

  • IsWindows : 检查当前操作系统是否是 windows。 [doc] [play]
  • IsLinux : 检查当前操作系统是否是 linux。 [doc] [play]
  • IsMac : 检查当前操作系统是否是 macos。 [doc] [play]
  • GetOsEnv : 根据 key 获取对应的环境变量值 [doc] [play]
  • SetOsEnv : 设置环境变量。 [doc] [play]
  • RemoveOsEnv : 删除环境变量。 [doc] [play]
  • CompareOsEnv : 换取环境变量并与传入值进行比较。 [doc] [play]
  • ExecCommand : 执行 shell 命令。 [doc] [play]
  • GetOsBits : 获取当前操作系统位数(32/64)。 [doc] [play]

23. Tuple 包实现一个元组数据类型。       回到目录

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

函数列表:

  • Tuple2 : 2 元元组 [doc] [play]
  • Tuple2_Unbox : 返回 2 元元组的字段值。 [doc] [play]
  • Zip2 : 创建一个 Tuple2 元组切片, 其中元组的元素和传入切片元素相对应。 [doc] [play]
  • Unzip2 : 根据传入的 Tuple2 切片,创建一组和 Tuple2 元素相对应的切片。 [doc] [play]
  • Tuple3 : 3 元元组 [doc] [play]
  • Tuple3_Unbox : 返回 3 元元组的字段值。 [doc] [play]
  • Zip3 : 创建一个 Tuple3 元组切片, 其中元组的元素和传入切片元素相对应。 [doc] [play]
  • Unzip3 : 根据传入的 Tuple3 切片,创建一组和 Tuple3 元素相对应的切片。 [doc] [play]
  • Tuple4 : 4 元元组 [doc] [play]
  • Tuple4_Unbox : 返回 4 元元组的字段值。 [doc] [play]
  • Zip4 : 创建一个 Tuple4 元组切片, 其中元组的元素和传入切片元素相对应。 [doc] [play]
  • Unzip4 : 根据传入的 Tuple4 切片,创建一组和 Tuple4 元素相对应的切片。 [doc] [play]
  • Tuple5 : 5 元元组 [doc] [play]
  • Tuple5_Unbox : 返回 5 元元组的字段值。 [doc] [play]
  • Zip5 : 创建一个 Tuple5 元组切片, 其中元组的元素和传入切片元素相对应。 [doc] [play]
  • Unzip5 : 根据传入的 Tuple5 切片,创建一组和 Tuple5 元素相对应的切片。 [doc] [play]
  • Tuple6 : 6 元元组 [doc] [play]
  • Tuple6_Unbox : 返回 6 元元组的字段值。 [doc] [play]
  • Zip6 : 创建一个 Tuple6 元组切片, 其中元组的元素和传入切片元素相对应。 [doc] [play]
  • Unzip6 : 根据传入的 Tuple6 切片,创建一组和 Tuple6 元素相对应的切片。 [doc] [play]
  • Tuple7 : 7 元元组 [doc] [play]
  • Tuple7_Unbox : 返回 7 元元组的字段值。 [doc] [play]
  • Zip7 : 创建一个 Tuple7 元组切片, 其中元组的元素和传入切片元素相对应。 [doc] [play]
  • Unzip7 : 根据传入的 Tuple7 切片,创建一组和 Tuple7 元素相对应的切片。 [doc] [play]
  • Tuple8 : 8 元元组 [doc] [play]
  • Tuple8_Unbox : 返回 8 元元组的字段值。 [doc] [play]
  • Zip8 : 创建一个 Tuple8 元组切片, 其中元组的元素和传入切片元素相对应。 [doc] [play]
  • Unzip8 : 根据传入的 Tuple8 切片,创建一组和 Tuple8 元素相对应的切片。 [doc] [play]
  • Tuple9 : 9 元元组 [doc] [play]
  • Tuple9_Unbox : 返回 9 元元组的字段值。 [doc] [play]
  • Zip9 : 创建一个 Tuple9 元组切片, 其中元组的元素和传入切片元素相对应。 [doc] [play]
  • Unzip9 : 根据传入的 Tuple9 切片,创建一组和 Tuple9 元素相对应的切片。 [doc] [play]
  • Tuple10 : 10 元元组 [doc] [play]
  • Tuple10_Unbox : 返回 10 元元组的字段值。 [doc] [play]
  • Zip10 : 创建一个 Tuple10 元组切片, 其中元组的元素和传入切片元素相对应。 [doc] [play]
  • Unzip10 : 根据传入的 Tuple10 切片,创建一组和 Tuple10 元素相对应的切片。 [doc] [play]

24. validator 验证器包,包含常用字符串格式验证函数。       回到目录

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

函数列表:

  • ContainChinese : 验证字符串是否包含中文字符。 [doc] [play]
  • ContainLetter : 验证字符串是否包含至少一个英文字母。 [doc] [play]
  • ContainLower : 验证字符串是否包含至少一个英文小写字母。 [doc] [play]
  • ContainUpper : 验证字符串是否包含至少一个英文大写字母。 [doc] [play]
  • IsAlpha : 验证字符串是否只包含英文字母。 [doc] [play]
  • IsAllUpper : 验证字符串是否全是大写英文字母。 [doc] [play]
  • IsAllLower : 验证字符串是否全是小写英文字母。 [doc] [play]
  • IsBase64 : 验证字符串是否是 base64 编码。 [doc] [play]
  • IsChineseMobile : 验证字符串是否是中国手机号码。 [doc] [play]
  • IsChineseIdNum : 验证字符串是否是中国身份证号码。 [doc] [play]
  • IsChinesePhone : 验证字符串是否是中国电话座机号码(xxx-xxxxxxxx or xxxx-xxxxxxx.)。 [doc] [play]
  • IsCreditCard : 验证字符串是否是信用卡号码。 [doc] [play]
  • IsDns : 验证字符串是否是有效 dns。 [doc] [play]
  • IsEmail : 验证字符串是否是有效电子邮件地址。 [doc] [play]
  • IsEmptyString : 验证字符串是否是空字符串。 [doc] [play]
  • IsFloat : 验证参数是否是浮点数((float32,float34)。 [doc] [play]
  • IsFloatStr : 验证字符串是否是可以转换为浮点数。 [doc] [play]
  • IsNumber : 验证参数是否是数字(integer,float)。 [doc] [play]
  • IsNumberStr : 验证字符串是否是可以转换为数字。 [doc] [play]
  • IsJSON : 验证字符串是否是有效 json。 [doc] [play]
  • IsRegexMatch : 验证字符串是否可以匹配正则表达式。 [doc] [play]
  • IsInt : 验证参数是否是整数(int, unit)。 [doc] [play]
  • IsIntStr : 验证字符串是否是可以转换为整数。 [doc] [play]
  • IsIp : 验证字符串是否是 ip 地址。 [doc] [play]
  • IsIpV4 : 验证字符串是否是 ipv4 地址。 [doc] [play]
  • IsIpV6 : 验证字符串是否是 ipv6 地址。 [doc] [play]
  • IsStrongPassword : 验证字符串是否是强密码:(字母+数字+特殊字符)。 [doc] [play]
  • IsUrl : 验证字符串是否是 url。 [doc] [play]
  • IsWeakPassword : 验证字符串是否是弱密码(只包含字母+数字)。 [doc] [play]
  • IsZeroValue : 判断传入的参数值是否为零值。 [doc] [play]
  • IsGBK : 检查数据编码是否为 gbk(汉字内部代码扩展规范)。 [doc] [play]
  • IsASCII : 验证字符串全部为 ASCII 字符。 [doc] [play]
  • IsPrintable : 检查字符串是否全部为可打印字符。 [doc] [play]
  • IsBin : 检查字符串是否是有效的二进制数。 [doc] [play]
  • IsHex : 检查字符串是否是有效的十六进制数。 [doc] [play]
  • IsBase64URL : 检查字符串是否是有效的 base64 url。 [doc] [play]
  • IsJWT : 检查字符串是否是有效的 JSON Web Token (JWT)。 [doc] [play]
  • IsVisa : 检查字符串是否是有效的 visa 卡号。 [doc] [play]
  • IsMasterCard : 检查字符串是否是有效的 MasterCard 卡号。 [doc] [play]
  • IsAmericanExpress : 检查字符串是否是有效的 American Express 卡号。 [doc] [play]
  • IsUnionPay : 检查字符串是否是有效的美国银联卡号。 [doc] [play]
  • IsChinaUnionPay : 检查字符串是否是有效的中国银联卡号。 [doc] [play]

25. xerror 包实现一些错误处理函数。       回到目录

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

函数列表:

  • New : 创建 XError 对象实例。 [doc] [play]
  • Wrap : 根据 error 对象创建 XError 对象实例,可添加 message。 [doc] [play]
  • Unwrap : 从 error 对象中解构出 XError。 [doc] [play]
  • XError_Wrap : 创建新的 XError 对象并将消息和 id 复制到新的对象中。 [doc] [play]
  • XError_Unwrap : 解构 XEerror 为 error 对象。适配 github.com/pkg/errors。 [doc [play]
  • XError_With : 添加与 XError 对象的键和值。 [doc] [play]
  • XError_Id : 设置 XError 对象的 id。 [doc] [play]
  • XError_Is : 检查目标 error 是否为 XError,两个错误中的 error.id 是否匹配。 [doc] [play]
  • XError_Values : 返回由 With 设置的键和值的映射。将合并所有 XError 键和值。 [doc] [play]
  • XError_StackTrace : 返回与 pkg/error 兼容的堆栈信息。 [doc] [play]
  • XError_Info : 返回可打印的 XError 对象信息。 [doc] [play]
  • XError_Error : 实现标准库的 error 接口。 [doc] [play]
  • TryUnwrap : 检查 error, 如果 err 为 nil 则展开,则它返回一个有效值,如果 err 不是 nil 则 Unwrap 使用 err 发生 panic。 [doc] [play]

如何贡献代码

贡献者

感谢所有为lancet贡献过代码的人!