GO语言工具函数库--Lancet

2023-12-27 13:52

本文主要是介绍GO语言工具函数库--Lancet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

支持300+常用功能的开源GO语言工具函数库–Lancet

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

特性

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

安装

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

go get github.com/duke-git/lancet/v2 //安装v2最新版本v2.x.x

2、使用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
}

算法包

algorithm算法包实现一些基本算法。例如:sort、search、lrucache等。

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

示例:BubbleSort

冒泡排序,参数comparator需要实现包
lancetconstraints.Comparator

函数签名:

func BubbleSort[T any](slice []T, comparator lancetconstraints.Comparator)

Example:

package mainimport ("fmt""github.com/duke-git/lancet/v2/algorithm"
)func main() {type intComparator struct{}func (c *intComparator) Compare(v1 any, v2 any) int {val1, _ := v1.(int)val2, _ := v2.(int)//ascending orderif val1 < val2 {return -1} else if val1 > val2 {return 1}return 0}intSlice := []int{2, 1, 5, 3, 6, 4}comparator := &intComparator{}algorithm.BubbleSort(intSlice, comparator)fmt.Println(intSlice) //[]int{1, 2, 3, 4, 5, 6}
}

并发包

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

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

示例:NewChannel

返回一个 Channel 指针实例

函数签名:


type Channel struct {}
func NewChannel() *Channel

Example:

package mainimport ("fmt""github.com/duke-git/lancet/v2/concurrency"
)func main() {c := concurrency.NewChannel()
}

转换器包

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

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

示例:ToBool

字符串转布尔类型,使用strconv.ParseBool

函数签名:

func ToBool(s string) (bool, error)

Example:


package mainimport ("fmt""github.com/duke-git/lancet/v2/convertor"
)func main() {v1, _ := convertor.ToBool("1")fmt.Println(v1) //truev2, _ := convertor.ToBool("true")fmt.Println(v2) //truev3, _ := convertor.ToBool("True")fmt.Println(v3) //truev4, _ := convertor.ToBool("123")fmt.Println(v4) //false
}

加密包

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

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

示例:AesEcbEncrypt

使用AES ECB算法模式加密数据. 参数key的长度是16, 24 or 32。

函数签名:

func AesEcbEncrypt(data, key []byte) []byte

Example:

package mainimport ("fmt""github.com/duke-git/lancet/v2/cryptor"
)func main() {data := "hello world"key := "abcdefghijklmnop"encrypted := cryptor.AesEcbEncrypt([]byte(data), []byte(key))fmt.Println(string(encrypted))
}

ps:根据需要选择性使用,不要本末倒置。更多用法去下面的开源地址或官网api中寻找。

开源协议:MIT

开源地址:https://github.com/duke-git/lancet
官网地址:https://www.golancet.cn

这篇关于GO语言工具函数库--Lancet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/543342

相关文章

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

go rate 原生标准限速库的使用

《gorate原生标准限速库的使用》本文主要介绍了Go标准库golang.org/x/time/rate实现限流,采用令牌桶算法控制请求速率,提供Allow/Reserve/Wait方法,具有一定... 目录介绍安装API介绍rate.NewLimiter:创建限流器limiter.Allow():请求是否

Python使用Turtle实现精确计时工具

《Python使用Turtle实现精确计时工具》这篇文章主要为大家详细介绍了Python如何使用Turtle实现精确计时工具,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录功能特点使用方法程序架构设计代码详解窗口和画笔创建时间和状态显示更新计时器控制逻辑计时器重置功能事件

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用