分享

[开源]一个全面、高效、可复用的Go语言工具函数库,300+常用函数

 风声之家 2022-06-10 发布于江苏

[开源]一个全面、高效、可复用的Go语言工具函数库,300+常用函数

一飞开源 2022-06-09 23:52 发表于湖南

收录于合集

#开源项目128
#Golang3
#工具函数库1
#300+常用函数1
#全面、高效、可复用1

一飞开源,介绍创意、新奇、有趣、实用的免费开源应用、系统、软件、硬件及技术,一个探索、发现、分享、使用与互动交流的开源技术社区平台。致力于打造活力开源社区,共建开源新生态!

图片

一、开源项目简介

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

二、开源协议

使用MIT开源协议

三、界面展示

图片

四、功能概述

特性

  •  全面、高效、可复用

  •  300+常用go工具函数,支持string、slice、datetime、net、crypt...

  •  只依赖go标准库

  •  所有导出函数单元测试覆盖率100%

五、技术选型

安装

Note:

  • 对于使用go1.18及以上的用户,建议安装v2.x.x。因为v2.x.x用go1.18的泛型重写了大部分函数。

go get github.com/duke-git/lancet/v2 //安装v2最新版本v2.x.x
  • 使用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 mainimport (    "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. datastructure包含一些普通的数据结构实现。例如:list, linklist, stack, queue, set, tree, graph.

import list "github.com/duke-git/lancet/v2/datastructure/list"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"

Function list:

  • List

  • Linklist

  • Stack

  • Queue

  • Set

  • Tree

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

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

函数列表:

  • ClearFile

  • CreateFile

  • CopyFile

  • FileMode

  • MiMeType

  • IsExist

  • IsLink

  • IsDir

  • ListFileNames

  • RemoveFile

  • ReadFileToString

  • ReadFileByLine

  • Zip

  • UnZip

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

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

函数列表:

  • Comma

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

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

函数列表:

  • After

  • Before

  • Curry

  • Compose

  • Debounced

  • Delay

  • Watcher

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

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

函数列表:

  • ForEach

  • Filter

  • Intersect

  • Keys

  • Merge

  • Minus

  • Values

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

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

Function list:

  • Average

  • Exponent

  • Fibonacci

  • Factorial

  • Max

  • MaxBy

  • Min

  • MinBy

  • Percent

  • RoundToFloat

  • RoundToString

  • TruncRound

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

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

函数列表:

  • ConvertMapToQueryString

  • GetInternalIp

  • GetIps

  • GetMacAddrs

  • GetPublicIpInfo

  • IsPublicIP

  • HttpGet

  • HttpDelete

  • HttpPost

  • HttpPut

  • HttpPatch

  • ParseHttpResponse

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

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

函数列表:

  • RandBytes

  • RandInt

  • RandString

  • UUIdV4

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

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

函数列表:

  • Context

  • Retry

  • RetryFunc

  • RetryDuration

  • RetryTimes

15. 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

  • IndexOf

  • LastIndexOf

  • Map

  • Reverse

  • Reduce

  • Shuffle

  • SortByField

  • Some

  • StringSlice

  • SymmetricDifference

  • Unique

  • Union

  • UpdateAt

  • Without

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

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

函数列表:

  • After

  • AfterLast

  • Before

  • BeforeLast

  • CamelCase

  • Capitalize

  • IsString

  • KebabCase

  • LowerFirst

  • UpperFirst

  • PadEnd

  • PadStart

  • ReverseStr

  • SnakeCase

  • SplitEx

  • Wrap

  • Unwrap

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

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

函数列表:

  • IsWindows

  • IsLinux

  • IsMac

  • GetOsEnv

  • SetOsEnv

  • RemoveOsEnv

  • CompareOsEnv

  • ExecCommand

18. 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)

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

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

函数列表:

  • Unwrap

六、源码地址

访问一飞开源:https://code./

收录于合集 #开源项目

 128

下一篇[开源]国产的开源项目管理软件,基于国际流行的敏捷项目管理方式

阅读原文

喜欢此内容的人还喜欢

数据小冰

不喜欢

确定

软件开发理论

不喜欢

确定

萤火架构

不喜欢

确定

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多