utils

module
v0.3.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 16, 2023 License: MIT

README

特性

  • 👏 全面、高效、可复用
  • 💪 300+常用 go 工具函数,支持 string、slice、datetime、net、crypt...
  • 💅 只依赖 go 标准库
  • 🌍 所有导出函数单元测试覆盖率 100%

安装

Note:

go get github.com/x-module/utils  

用法

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

import "github.com/x-module/utils/strutil"

例子

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

package main

import (
    "fmt"
    "github.com/x-module/utils/strutil"
)

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

模块文档

1. driver 实现各种服务的驱动

Function list:
  • InitializeDB : mysql数据库驱动
  • InitializeRedis : Redis数据库驱动

工具包文档

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

import "github.com/x-module/utils/algorithm"
Function list:
  • 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]
  • LRUCache : 应用 lru 算法实现内存缓存. [doc] [play]

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

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

3. condition 包含一些用于条件判断的函数。

import "github.com/x-module/utils/condition"
Function list:
  • 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]

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

import "github.com/x-module/utils/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]

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

import "github.com/x-module/utils/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]
  • HmacSha1 : 返回字符串sha1 hmac值。 [doc] [play]
  • HmacSha256 : 返回字符串sha256 hmac值。 [doc] [play]
  • HmacSha512 : 返回字符串sha256 hmac值。 [doc] [play]
  • Md5String : 返回字符串md5值。 [doc] [play]
  • Md5File : 返回文件md5值。 [doc]
  • Sha1 : 返回字符串sha1哈希值。 [doc] [play]
  • Sha256 :返回字符串sha256哈希值。 [doc] [play]
  • Sha512 : 返回字符串sha512哈希值。 [doc] [play]
  • GenerateRsaKey : 在当前目录下创建rsa私钥文件和公钥文件。 [doc] [play]
  • RsaEncrypt : 用公钥文件ras加密数据。 [doc] [play]
  • RsaDecrypt : 用私钥文件rsa解密数据。 [doc] [play]

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

import "github.com/x-module/utils/datetime"
函数列表:
  • AddDay : 将日期加/减天数。 [doc] [play]
  • AddHour : 将日期加/减小时数。 [doc] [play]
  • AddMinute : 将日期加/减分钟数。 [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]
  • 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]
import list "github.com/x-module/utils/datastructure/list"
import link "github.com/x-module/utils/datastructure/link"
import stack "github.com/x-module/utils/datastructure/stack"
import queue "github.com/x-module/utils/datastructure/queue"
import set "github.com/x-module/utils/datastructure/set"
import tree "github.com/x-module/utils/datastructure/tree"
import heap "github.com/x-module/utils/datastructure/heap"
import hashmap "github.com/x-module/utils/datastructure/hashmap"
Function list:
  • List : 线性表结构, 用切片实现。 [doc]
  • Link : 链表解构, 包括单链表和双向链表。 [doc]
  • Stack : 栈结构(fifo), 包括数组栈和链表栈。 [doc]
  • Queue : 队列结构(filo), 包括数组队列,链表队列,循环队列,优先级队列。 [doc]
  • Set : 集合(set)结构。 [doc]
  • Tree : 二叉搜索树。 [doc]
  • Heap : 二叉max堆。 [doc]
  • Hashmap : 哈希映射。 [doc]

8. fileutil 包含文件基本操作。

import "github.com/x-module/utils/fileutil"
函数列表:
  • ClearFile : 清空文件内容。 [doc] [play]
  • CreateFile : 创建文件,创建成功返回 true, 否则返回 false。 [doc] [play]
  • CreateDir : 创建嵌套目录,例如/a/, /a/b/。 [doc] [play]
  • CopyFile :拷贝文件,会覆盖原有的文件。 [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]
  • UnZip : zip 解压缩文件并保存在目录中。 [doc] [play]

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

import "github.com/x-module/utils/formatter"
函数列表:
  • Comma : 用逗号每隔 3 位分割数字/字符串,支持前缀添加符号。 [doc] [play]

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

import "github.com/x-module/utils/function"
函数列表:
  • After : 创建一个函数,当该函数被调用n或更多次之后将执行传入的函数。 [doc] [play]
  • Before : 创建一个函数,当该函数被调用不超过n次时,将执行执行传入的函数。 [doc] [play]
  • CurryFn : 创建柯里化函数。 [doc]
  • Compose : 从右至左组合函数列表fnList,返回组合后的函数。 [doc]
  • Delay : 延迟delay时间后调用函数。 [doc] [play]
  • Debounced : 创建一个debounced函数,该函数延迟调用fn直到自上次调用debounced函数后等待持续时间过去。 [doc] [play]
  • Schedule : 每次持续时间调用函数,直到关闭返回的channel。 [doc] [play]
  • Pipeline : 从右至左执行函数列表。 [doc] [play]
  • Watcher : Watcher用于记录代码执行时间。可以启动/停止/重置手表定时器。获取函数执行的时间。 [doc]

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

import "github.com/x-module/utils/maputil"
函数列表:
  • ForEach : 对 map 中的每对 key 和 value 执行 iteratee 函数。 [doc] [play]
  • Filter : 迭代 map 中的每对 key 和 value,返回 map,其中的 key 和 value 符合 predicate 函数。 [doc] [play]
  • Intersect : 多个 map 的交集操作。 [doc] [play]
  • Keys : 返回 map 中所有 key 组成的切片。 [doc] [play]
  • Merge : 合并多个 map, 相同的 key 会被之后的 key 覆盖。 [doc] [play]
  • Minus : 返回一个 map,其中的 key 存在于 mapA,不存在于 mapB。 [doc] [play]
  • Values : 返回 map 中所有 values 组成的切片 [doc] [play]
  • IsDisjoint : 验证两个 map 是否具有不同的 key。 [doc] [play]

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

import "github.com/x-module/utils/mathutil"
Function list:
  • 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]
  • RoundToFloat : 四舍五入,保留 n 位小数,返回 float64。 [doc] [play]
  • RoundToString : 四舍五入,保留 n 位小数,返回 string。 [doc] [play]
  • TruncRound : 截短 n 位小数(不进行四舍五入)。 [doc] [play]

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

import "github.com/x-module/utils/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]

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

import "github.com/x-module/utils/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]

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

import "github.com/x-module/utils/retry"
函数列表:
  • Context : 设置重试context参数。 [doc] [play]
  • Retry : 重试执行函数retryFunc,直到函数运行成功,或被context取消。 [doc] [play]
  • RetryFunc : 重试执行的函数。 [doc] [play]
  • RetryDuration : 设置重试间隔时间,默认3秒。 [doc] [play]
  • RetryTimes : 设置重试次数,默认5。 [doc] [play]

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

import "github.com/x-module/utils/slice"
函数列表:
  • AppendIfAbsent : 当前切片中不包含值时,将该值追加到切片中。 [doc] [play]
  • Contain : 判断slice是否包含value。 [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]
  • Drop : 创建一个切片,当n > 0时从开头删除n个元素,或者当n < 0时从结尾删除n个元素。 [doc] [play]
  • Equal : 检查两个切片是否相等,相等条件:切片长度相同,元素顺序和值都相同。 [doc] [play]
  • EqualWith : 检查两个切片是否相等,相等条件:对两个切片的元素调用比较函数comparator,返回true。 [doc] [play]
  • Every : 如果切片中的所有值都通过谓词函数,则返回true。 [doc] [play]
  • Filter : 返回切片中通过predicate函数真值测试的所有元素。 [doc] [play]
  • Find : 遍历切片的元素,返回第一个通过predicate函数真值测试的元素。 [doc] [play]
  • FindLast : 从头到尾遍历slice的元素,返回最后一个通过predicate函数真值测试的元素。 [doc] [play]
  • Flatten : 将多维切片展平一层。 [doc] [play]
  • FlattenDeep : 将多维切片递归展平到一层。 [doc] [play]
  • ForEach : 遍历切片的元素并为每个元素调用iteratee函数。 [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]
  • Reduce : 将切片中的元素依次运行iteratee函数,返回运行结果。 [doc] [play]
  • Replace : 返回切片的副本,其中前n个不重叠的old替换为new。 [doc] [play]
  • ReplaceAll : 返回切片的副本,将其中old全部替换为new。 [doc] [play]
  • Repeat : 创建一个切片,包含n个传入的item。 [doc] [play]
  • Shuffle : 随机打乱切片中的元素顺序。 [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]
  • KeyBy :将切片每个元素调用函数后转为map。 [doc] [play]

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

import "github.com/x-module/utils/strutil"
函数列表:
  • After : 返回源字符串中指定字符串首次出现时的位置之后的子字符串。 [doc] [play]
  • AfterLast : 返回源字符串中指定字符串最后一次出现时的位置之后的子字符串。 [doc] [play]
  • Before : 返回源字符串中指定字符串第一次出现时的位置之前的子字符串。 [doc] [play]
  • BeforeLast : 返回源字符串中指定字符串最后一次出现时的位置之前的子字符串。 [doc] [play]
  • CamelCase : 将字符串转换为 CamelCase 驼峰式字符串, 非字母和数字会被忽略。 [doc] [play]
  • Capitalize : 将字符串的第一个字符转换为大写。 [doc] [play]
  • IsString : 判断传入参数的数据类型是否为字符串。 [doc] [play]
  • KebabCase : 将字符串转换为 kebab-case 形式字符串, 非字母和数字会被忽略。 [doc] [play]
  • UpperKebabCase : 将字符串转换为大写 KEBAB-CASE 形式字符串, 非字母和数字会被忽略。 [doc] [play]
  • LowerFirst : 将字符串的第一个字符转换为小写形式。 [doc] [play]
  • UpperFirst : 将字符串的第一个字符转换为大写形式。 [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]
  • Wrap : 用给定字符包裹传入的字符串 [doc] [play]
  • Unwrap : 从另一个字符串中解开一个给定的字符串。 将更改源字符串。 [doc] [play]

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

import "github.com/x-module/utils/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]

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

import "github.com/x-module/utils/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]
  • IsFloatStr : 验证字符串是否是可以转换为浮点数。 [doc] [play]
  • IsNumberStr : 验证字符串是否是可以转换为数字。 [doc] [play]
  • IsJSON : 验证字符串是否是有效json。 [doc] [play]
  • IsRegexMatch : 验证字符串是否可以匹配正则表达式。 [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]

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

import "github.com/x-module/utils/xerror"
函数列表:
  • Unwrap : 检查error, 如果err为nil则展开,则它返回一个有效值,如果err不是nil则Unwrap使用err发生panic。 [doc] [play]

  • Unwrap

如何贡献代码

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

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

Directories

Path Synopsis
gamelift
generate
nakama
api
registry
cache
Package cache provides a registry cache
Package cache provides a registry cache
etcd
Package etcd provides an etcd service registry
Package etcd provides an etcd service registry
eureka
Package eureka provides a Eureka registry
Package eureka provides a Eureka registry
eureka/mock
This file was generated by counterfeiter
This file was generated by counterfeiter
gossip
Package gossip provides a gossip registry based on hashicorp/memberlist
Package gossip provides a gossip registry based on hashicorp/memberlist
kubernetes
Package kubernetes provides a kubernetes registry
Package kubernetes provides a kubernetes registry
kubernetes/client
Package client is the kubernetes registry client.
Package client is the kubernetes registry client.
kubernetes/client/api
Package api ...
Package api ...
kubernetes/client/mock
Package mock implements a mock k8s client.
Package mock implements a mock k8s client.
kubernetes/client/watch
Package watch implements the k8s watcher.
Package watch implements the k8s watcher.
mdns
Package mdns provides a multicast dns registry
Package mdns provides a multicast dns registry
memory
Package memory provides an in-memory registry
Package memory provides an in-memory registry
nats
Package nats provides a NATS registry using broadcast queries
Package nats provides a NATS registry using broadcast queries
polaris
Package polaris provides an etcd service registry https://github.com/polarismesh/polaris
Package polaris provides an etcd service registry https://github.com/polarismesh/polaris
proxy
Package proxy is a registry plugin for the micro proxy
Package proxy is a registry plugin for the micro proxy
zookeeper
Package zookeeper provides a zookeeper registry
Package zookeeper provides a zookeeper registry
concurrency
Package concurrency contain some functions to support concurrent programming.
Package concurrency contain some functions to support concurrent programming.
condition
Package condition contains some functions for conditional judgment.
Package condition contains some functions for conditional judgment.
convertor
Package convertor implements some functions to convert data.
Package convertor implements some functions to convert data.
cryptor
Package cryptor implements some util functions to encrypt and decrypt.
Package cryptor implements some util functions to encrypt and decrypt.
datastructure
Package datastructure implements some data structure.
Package datastructure implements some data structure.
datastructure/hashmap
Package datastructure implements some data structure.
Package datastructure implements some data structure.
datastructure/heap
Package datastructure implements some data structure.
Package datastructure implements some data structure.
datastructure/list
Package datastructure implements some data structure.
Package datastructure implements some data structure.
datetime
Package datetime implements some functions to format date and time.
Package datetime implements some functions to format date and time.
fileutil
Package fileutil implements some basic functions for file operations
Package fileutil implements some basic functions for file operations
formatter
Package formatter implements some functions to format string, struct.
Package formatter implements some functions to format string, struct.
function
Package function implements some functions for control the function execution and some is for functional programming.
Package function implements some functions for control the function execution and some is for functional programming.
internal
Package internal is for internal use.
Package internal is for internal use.
iterator
Package iterator provides a way to iterate over values stored in containers.
Package iterator provides a way to iterate over values stored in containers.
lancetconstraints
Package lancetconstraints contain some comstomer constraints.
Package lancetconstraints contain some comstomer constraints.
maputil
Package maputil includes some functions to manipulate map.
Package maputil includes some functions to manipulate map.
mathutil
Package mathutil implements some functions for math calculation.
Package mathutil implements some functions for math calculation.
netutil
Package netutil implements some basic functions to send http request and get ip info.
Package netutil implements some basic functions to send http request and get ip info.
random
Package random implements some basic functions to generate random int and string.
Package random implements some basic functions to generate random int and string.
retry
Package retry is for executing a function repeatedly until it was successful or canceled by the context.
Package retry is for executing a function repeatedly until it was successful or canceled by the context.
slice
Package slice implements some functions to manipulate slice.
Package slice implements some functions to manipulate slice.
strutil
Package strutil implements some functions to manipulate string.
Package strutil implements some functions to manipulate string.
system
Package system contain some functions about os, runtime, shell command.
Package system contain some functions about os, runtime, shell command.
validator
Package validator implements some validate function for string.
Package validator implements some validate function for string.
xerror
Package xerror implements helpers for errors
Package xerror implements helpers for errors

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL