四时宝库

程序员的知识宝库

Golang第三方库: 函数库lancet(golang工具类库)

简介

lancet是一个全面、高效、可复用的go语言工具函数库。

github地址:https://github.com/duke-git/lancet

特性

  • 全面、高效、可复用。
  • 600+常用 go 工具函数,支持 string、slice、datetime、net、crypt...
  • 只依赖 go 标准库和 golang.org/x。
  • 所有导出函数单元测试覆盖率 100%。

函数库列表:algorithm 包实现一些基本查找和排序算法

  • BubbleSort : 使用冒泡排序算法对切片进行排序。
  • CountSort : 使用计数排序算法对切片进行排序。不改变原数据。
  • HeapSort : 使用堆排序算法对切片进行排序。
  • InsertionSort : 使用插入排序算法对切片进行排序。
  • MergeSort : 使用合并排序算法对切片进行排序。
  • QuickSort : 使用快速排序算法对切片进行排序。
  • SelectionSort : 使用选择排序算法对切片进行排序。
  • ShellSort : 使用希尔排序算法对切片进行排序。
  • BinarySearch : 返回排序切片中目标值的索引,使用二分搜索(递归调用)。
  • BinaryIterativeSearch :返回排序切片中目标值的索引,使用二分搜索(非递归)。
  • LinearSearch : 基于传入的相等函数返回切片中目标值的索引。(线性查找)
  • LRUCache : 应用 lru 算法实现内存缓存.

函数库列表:compare 包提供几个轻量级的类型比较函数。

  • Equal : 检查两个值是否相等(检查类型和值)。
  • EqualValue : 检查两个值是否相等(只检查值)。
  • LessThan : 验证参数left的值是否小于参数right的值。
  • GreaterThan : 验证参数left的值是否大于参数right的值。
  • LessOrEqual : 验证参数left的值是否小于或等于参数right的值。
  • GreaterOrEqual : 验证参数left的值是否大于或等于参数right的值。
  • InDelta : 检查增量内两个值是否相等。

函数库列表:concurrency 包含一些支持并发编程的功能

  • NewChannel : 返回一个 Channel 指针实例。
  • Bridge : 将多个 channel 链接到一个 channel,直到取消上下文。
  • FanIn : 将多个 channel 合并为一个 channel,直到取消上下文。
  • Generate : 根据传入的值,生成 channel。
  • Or : 将一个或多个 channel 读取到一个 channel 中,当任何读取 channel 关闭时将结束读取。
  • OrDone : 将一个 channel 读入另一个 channel,直到取消上下文。
  • Repeat : 返回一个 channel,将参数values重复放入 channel,直到取消上下文。
  • RepeatFn : 返回一个 channel,重复执行函数 fn,并将结果放入返回的 channel,直到取消上下文。
  • Take : 返回一个 channel,其值从另一个 channel 获取,直到取消上下文。
  • Tee : 将一个 channel 分成两个 channel,直到取消上下文。

函数库列表:condition 包含一些用于条件判断的函数

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

函数库列表:convertor 转换器包支持一些常见的数据类型转换。

  • ColorHexToRGB : 颜色值十六进制转 rgb。
  • ColorRGBToHex : 颜色值 rgb 转十六进制。
  • ToBool : 字符串转布尔类型,使用 strconv.ParseBool。
  • ToBytes : interface 转字节切片。
  • ToChar : 字符串转字符切片。
  • ToChannel : 将切片转为只读 channel。
  • ToFloat : 将 interface 转成 float64 类型,如果参数无法转换,会返回 0.0 和 error。
  • ToInt : 将 interface 转成 int64 类型,如果参数无法转换,会返回 0 和 error。
  • ToJson : 将 interface 转成 json 字符串,如果参数无法转换,会返回""和 error。
  • ToMap : 将切片转为 map。
  • ToPointer : 返回传入值的指针。
  • ToString : 将值转换为字符串,对于数字、字符串、[]byte,将转换为字符串。 对于其他类型(切片、映射、数组、结构)将调用 json.Marshal。
  • StructToMap : 将 struct 转成 map,只会转换 struct 中可导出的字段。
  • MapToSlice : map 中 key 和 value 执行函数 iteratee 后,转为切片。
  • EncodeByte : 将传入的 data 编码成字节切片。
  • DecodeByte : 解码字节切片到目标对象,目标对象需要传入一个指针实例。
  • DeepClone : 创建一个传入值的深拷贝, 无法克隆结构体的非导出字段。
  • CopyProperties : 拷贝不同结构体之间的同名字段。
  • ToInterface : 将反射值转换成对应的 interface 类型。
  • Utf8ToGbk : utf8 编码转 GBK 编码。
  • GbkToUtf8 : GBK 编码转 utf8 编码。

函数库列表:cryptor 加密包支持数据加密和解密,获取 md5,hash 值

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

函数库列表:datetime 日期时间处理包,格式化日期,比较日期

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

函数库列表:fileutil 包含文件基本操作

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

还有好多其他函数库列表,可以直接查看github地址:https://github.com/duke-git/lancet

示例

package main

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

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

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接