欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

lancet:一个全面、高效、可重复使用的 go 语言工具库

最编程 2024-05-05 07:15:16
...

Lancet

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

特性

  • ???? 全面、高效、可复用
  • ???? 300+常用go工具函数,支持string、slice、datetime、net、crypt...
  • ???? 只依赖go标准库
  • ???? 所有导出函数单元测试覆盖率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.2.9。
go get github.com/duke-git/lancet@v1.2.9 // 使用go1.18以下版本, 必须安装v1.x.x版本

用法

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

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

例子

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

package main

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

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

API文档

1. algorithm算法包实现一些基本算法。eg. sort, search.

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

Function list:

  • BubbleSort
  • CountSort
  • HeapSort
  • InsertionSort
  • MergeSort
  • QuickSort
  • SelectionSort
  • ShellSort
  • BinarySearch
  • BinaryIterativeSearch
  • LinearSearch
  • LRUCache

2. 并发包包含一些支持并发编程的功能。例如:goroutine, channel, async等。

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

Function list:

  • NewChannel
  • Bridge
  • FanIn
  • Generate
  • Or
  • OrDone
  • Repeat
  • RepeatFn
  • Take
  • Tee

3. convertor转换器包支持一些常见的数据类型转换。

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

函数列表:

  • ColorHexToRGB
  • ColorRGBToHex
  • ToBool
  • ToBytes
  • ToChar
  • ToInt
  • ToJson
  • ToString
  • StructToMap

4. cryptor加密包支持数据加密和解密,获取md5,hash值。支持base64, md5, hmac, aes, des, rsa。

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

函数列表:

  • AesEcbEncrypt
  • AesEcbDecrypt
  • AesCbcEncrypt
  • AesCbcDecrypt
  • AesCtrCrypt
  • AesCfbEncrypt
  • AesCfbDecrypt
  • AesOfbEncrypt
  • AesOfbDecrypt
  • Base64StdEncode
  • Base64StdDecode
  • DesEcbEncrypt
  • DesEcbDecrypt
  • DesCbcEncrypt
  • DesCbcDecrypt
  • DesCtrCrypt
  • DesCfbEncrypt
  • DesCfbDecrypt
  • DesOfbEncrypt
  • DesOfbDecrypt
  • HmacMd5
  • HmacSha1
  • HmacSha256
  • HmacSha512
  • Md5String
  • Md5File
  • Sha1
  • Sha256
  • Sha512
  • GenerateRsaKey
  • RsaEncrypt
  • RsaDecrypt

5. datetime日期时间处理包,格式化日期,比较日期。

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

函数列表:

  • AddDay
  • AddHour
  • AddMinute
  • BeginOfMinute
  • BeginOfHour
  • BeginOfDay
  • BeginOfWeek
  • BeginOfMonth
  • BeginOfYear
  • EndOfMinute
  • EndOfHour
  • EndOfDay
  • EndOfWeek
  • EndOfMonth
  • EndOfYear
  • GetNowDate
  • GetNowTime
  • GetNowDateTime
  • GetZeroHourTimestamp
  • GetNightTimestamp
  • FormatTimeToStr
  • FormatStrToTime
  • NewUnix
  • NewUnixNow
  • NewFormat
  • NewISO8601
  • ToUnix
  • ToFormat
  • ToFormatForTpl
  • ToIso8601

6. fileutil包支持文件基本操作。

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

函数列表:

  • ClearFile
  • CreateFile
  • CopyFile
  • FileMode
  • MiMeType
  • IsExist
  • IsLink
  • IsDir
  • ListFileNames
  • RemoveFile
  • ReadFileToString
  • ReadFileByLine
  • Zip
  • UnZip

7. formatter格式化器包含一些数据格式化处理方法。

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

函数列表:

  • Comma

8. function函数包控制函数执行流程,包含部分函数式编程。

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

函数列表:

  • After
  • Before
  • Curry
  • Compose
  • Debounced
  • Delay
  • Watcher

9. maputil包包括一些操作map的函数.

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

函数列表:

  • ForEach
  • Filter
  • Intersect
  • Keys
  • Merge
  • Minus
  • Values

10. mathutil包实现了一些数学计算的函数。

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

Function list:

  • Average
  • Exponent
  • Fibonacci
  • Factorial
  • Max
  • Min
  • Percent
  • RoundToFloat
  • RoundToString
  • TruncRound

11. netutil网络包支持获取ip地址,发送http请求。

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

函数列表:

  • ConvertMapToQueryString
  • GetInternalIp
  • GetIps
  • GetMacAddrs
  • GetPublicIpInfo
  • IsPublicIP
  • HttpGet
  • HttpDelete
  • HttpPost
  • HttpPut
  • HttpPatch
  • ParseHttpResponse

12. random随机数生成器包,可以生成随机[]bytes, int, string。

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

函数列表:

  • RandBytes
  • RandInt
  • RandString
  • UUIdV4

13. retry重试执行函数直到函数运行成功或被context cancel。

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

函数列表:

  • Context
  • Retry
  • RetryFunc
  • RetryDuration
  • RetryTimes

14. slice包包含操作切片的方法集合。

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

函数列表:

  • Contain
  • ContainSubSlice
  • Chunk
  • Compact
  • Concat
  • Count
  • Difference
  • DifferenceBy
  • DifferenceWith
  • DeleteAt
  • Drop
  • Every
  • Filter
  • Find
  • FindLast
  • FlattenDeep
  • ForEach
  • GroupBy
  • GroupWith
  • IntSlice
  • InterfaceSlice
  • Intersection
  • InsertAt
  • Map
  • Reverse
  • Reduce
  • Shuffle
  • SortByField
  • Some
  • StringSlice
  • SymmetricDifference
  • Unique
  • Union
  • UpdateAt
  • Without

15. strutil包含处理字符串的相关函数。

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

函数列表:

  • After
  • AfterLast
  • Before
  • BeforeLast
  • CamelCase
  • Capitalize
  • IsString
  • KebabCase
  • LowerFirst
  • UpperFirst
  • PadEnd
  • PadStart
  • ReverseStr
  • SnakeCase
  • Wrap
  • Unwrap

16. system包含os, runtime, shell command相关函数。

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

函数列表:

  • IsWindows
  • IsLinux
  • IsMac
  • GetOsEnv
  • SetOsEnv
  • RemoveOsEnv
  • CompareOsEnv
  • ExecCommand

17. validator验证器包,包含常用字符串格式验证函数。

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

函数列表:

  • ContainChinese
  • ContainLetter
  • ContainLower
  • ContainUpper
  • IsAlpha
  • IsAllUpper
  • IsAllLower
  • IsBase64
  • IsChineseMobile
  • IsChineseIdNum
  • IsChinesePhone
  • IsCreditCard
  • IsDns
  • IsEmail
  • IsEmptyString
  • IsFloatStr
  • IsNumberStr
  • IsJSON
  • IsRegexMatch
  • IsIntStr
  • IsIp
  • IsIpV4
  • IsIpV6
  • IsStrongPassword
  • IsUrl
  • IsWeakPassword

validator.md#IsWeakPassword)

18. xerror包实现一些错误处理函数

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

函数列表:

  • Unwrap

如何贡献代码

非常感激任何的代码提交以使lancet的功能越来越强大。创建pull request时请遵守以下规则。

  1. Fork lancet仓库。
  2. 创建自己的特性分支。
  3. 提交变更。
  4. Push分支。
  5. 创建新的pull request。