介绍

这是一个基于 Go 语言开发的通用数据类型处理工具类,帮助开发者在业务代码实现中处理常见的数据类型和数据操作。可以让您专注于您的业务代码的实现,而免去处理基本数据类型转换和验证的功能。该工具库无侵入式的设计可以让您的业务代码更容易阅读和优雅。

快速开始

安装

使用 Go1.18 及以上版本的用户,建议安装 v2.x.x。 因为 v2.x.x 应用 Go1.18 的泛型重写了大部分函数

go get -u github.com/jefferyjob/go-easy-utils

使用 Go1.18 以下版本的用户,必须安装 v1.x.x。目前最新的 v1 版本是 v1.1.0

go get github.com/jefferyjob/go-easy-utils@v1.1.0

使用Demo

package main

import (
"fmt"
"github.com/jefferyjob/go-easy-utils/sliceUtil"
) func main() {
var slice = []string{"this", "is", "go", "easy", "utils"}
chunkSlice := sliceUtil.ChunkSlice(slice, 2)
fmt.Printf("%v", chunkSlice)
}

功能列表

jsonUtil Json处理工具

// JsonToStruct 将 JSON 字符串解析为指定的结构体指针
func JsonToStruct(jsonData string, result any) error

ValidUtil 验证工具

// IsTime 验证是否为时间格式(HH:mm:ss)
func IsTime(str string) bool // IsDate 验证是否为日期格式(yyyy-MM-dd)
func IsDate(str string) bool // IsDateTime 验证是否为日期时间格式(yyyy-MM-dd HH:mm:ss)
func IsDateTime(str string) bool // IsIDCard 验证身份证号(18或15位)
func IsIDCard(str string) bool // IsIDCard18 验证18位身份证号
func IsIDCard18(id string) bool // IsIDCard15 验证15位身份证号
func IsIDCard15(idCard string) bool // IsMobile 验证是否为手机号码
func IsMobile(mobileNum string) bool // IsTelephone 验证是否为座机号码
func IsTelephone(telephone string) bool // IsPostalCode 验证是否为邮编号码
func IsPostalCode(str string) bool // IsDecimal 验证给定的字符串小数点后是否最多两位
func IsDecimal(input string) bool // IsNumber 验证是否全部为数字
func IsNumber(input string) bool // IsBankCardNo 验证是否为银行卡号
func IsBankCardNo(str string) bool // IsAllChinese 验证给定的字符串全部为中文
func IsAllChinese(input string) bool // IsContainChinese 验证给定的字符串包含中文
func IsContainChinese(input string) bool // IsEmail 是否为email
func IsEmail(input string) bool // IsIPv4 是否为ipv4地址
func IsIPv4(input string) bool // IsIPv6 是否为ipv6地址
func IsIPv6(input string) bool // IsURL 是否为URL地址
func IsURL(input string) bool // IsJSON 是否为Json
func IsJSON(input string) bool // IsChineseName 验证是否为中文名
func IsChineseName(name string) bool // IsEnglishName 验证是否为英文名
func IsEnglishName(name string) bool // IsQQ 验证是否为QQ号
func IsQQ(qq string) bool // IsWeChat 验证是否为微信号
func IsWeChat(wechat string) bool // IsWeibo 验证是否为微博ID
func IsWeibo(weibo string) bool // IsPassword 验证密码是否合法
// 密码长度在6-20个字符之间,只包含数字、字母和下划线
func IsPassword(password string) bool

strUtil 字符串工具

// StrToInt string转int
func StrToInt(v string) int // StrToInt8 string转int8
func StrToInt8(v string) int8 // StrToInt16 string转int16
func StrToInt16(v string) int16 // StrToInt32 string转int32
func StrToInt32(v string) int32 // StrToInt64 string转int64
func StrToInt64(v string) int64 // StrToUint string转uint
func StrToUint(v string) uint // StrToUint8 string转uint8
func StrToUint8(v string) uint8 // StrToUint16 string转uint16
func StrToUint16(v string) uint16 // StrToUint32 string转uint32
func StrToUint32(v string) uint32 // StrToUint64 string转uint64
func StrToUint64(v string) uint64 // StrToBytes 字符串转字节数组
func StrToBytes(v string) []byte

sliceUtil 切片处理工具

// Chunk 把slice分割为新的数组块
func ChunkSlice(slice []T, size int) [][]T // Column 获取slice中某个单一列的值
func ColumnSlice(slice []T, column string) []any // In 判断value是否在slice中
func InSlice(value T, slices []T) bool // Is 判断指定值i是否是slice类型
func IsSlice(slice any) bool // Merge 将多个slice合并成一个slice
func MergeSlice(slices ...[]T) []T // Sum 对slice中的元素求和
func SumSlice(slice []T) T // Unique 移除slice中重复的值
func UniqueSlice(slice []T) []T

mapUtil map类型处理

// MapKeyExists 判断map中的key是否存在
func MapKeyExists((m map[T]T2, key T)) bool // MapValueExists 判断map中的value是否存在
func MapValueExists(m map[T2]T, value T) bool

mathUtil

// Abs 返回一个数的绝对值
func Abs(num T) T // Ceil 对float数据向上取整
func Ceil(num T) int // Floor 对float数据向下取整
func Floor(num T) int // Max 返回slice中最大值
func Max(slice []T) T // Min 返回slice中最小值
func Min(slice []T) T // Round 对float数据四舍五入
func Round(num T) int

floatUtil 浮点型处理

// Float32ToStr float32转字符串
func Float32ToStr(f float32) string // Float64ToStr float64转字符串
func Float64ToStr(f float64) string // Float32ToFloat64 float32转float64
func Float32ToFloat64(f float32) float64 // Float64ToFloat32 float64转float32
func Float64ToFloat32(f float64) float32

emoji表情包

// DecodeEmojiUnicode Emoji表情解码
func DecodeEmojiUnicode(unicode string) string // EncodeEmojiUnicode Emoji表情编码
func EncodeEmojiUnicode(emoji string) string

cryptoUtil 加密与解密

// HashSHA256 hash加密
func HashSHA256(str string) string // Md5 MD5加密
func Md5(string string) string

byteUtil 字节数组

// BytesToStr 字节数组转字符串
func BytesToStr(data []byte) string

anyUtil 任意类型转换

// AnyToFloat32 将给定的值转换为float32
func AnyToFloat32(i any) (float32, error) // AnyToFloat64 将给定的值转换为float64
func AnyToFloat64(i any) (float64, error) // AnyToInt 将给定的值转换为 int
func AnyToInt(i any) (int, error) // AnyToInt8 将给定的值转换为 int8
func AnyToInt8(i any) (int8, error) // AnyToInt16 将给定的值转换为 int16
func AnyToInt16(i any) (int16, error) // AnyToInt32 将给定的值转换为 int32
func AnyToInt32(i any) (int32, error) // AnyToInt64 将给定的值转换为 int64
func AnyToInt64(i any) (int64, error) // AnyToStr 任意类型数据转string
func AnyToStr(i any) string // AnyToUint 将给定的值转换为 uint
func AnyToUint(i any) (uint, error) // AnyToUint8 将给定的值转换为 uint8
func AnyToUint8(i any) (uint8, error) // AnyToUint16 将给定的值转换为 uint16
func AnyToUint16(i any) (uint16, error) // AnyToUint32 将给定的值转换为 uint32
func AnyToUint32(i any) (uint32, error) // AnyToUint64 将给定的值转换为 uint64
func AnyToUint64(i any) (uint64, error) // AnyToBool 将给定的值转换为bool
func AnyToBool(i any) bool

go-easy-utils 2.0 正式发布,全面支持泛型和any的更多相关文章

  1. CoreWCF 1.0 正式发布,支持 .NET Core 和 .NET 5+ 的 WCF

    CoreWCF 1.0 正式发布,支持 .NET Core 和 .NET 5+ 的 WCF https://devblogs.microsoft.com/dotnet/corewcf-v1-relea ...

  2. Spring Boot 2.2.0 正式发布,支持 JDK 13!

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 推荐阅读: Spring Boot 2.2.0 正式发布了,可从 repo.spring.io 或是 Maven Centr ...

  3. HIPPO-4J 1.3.0 正式发布:支持 Dubbo、RibbitMQ、RocketMQ 框架线程池

    文章首发在公众号(龙台的技术笔记),之后同步到个人网站:xiaomage.info Hippo-4J 距离上一个版本 1.2.1 已经过去一个月的时间.在此期间,由 8 位贡献者 提交了 170+ c ...

  4. Sentinel 1.5.0 正式发布,引入 Reactive 支持

    近日,流控降级组件 Sentinel 的又一个里程碑版本 1.5.0 正式发布. 该版本引入 Reactive 的支持,并提供多项新特性与改进.从 1.5.0 版本开始,Sentinel 仅支持 JD ...

  5. 全球首发-基于.NET 6长线支持Zoomla!逐浪CMS v8.6.0正式发布

    传送门: https://www.z01.com/down/3778.shtml 全新Zoomla!逐浪CMS v8.6.0 全于首个基于.net 6长线支持的CMS-Zoomla!逐浪CMS v8. ...

  6. Angular4.0.0正式发布,附新特性及升级指南

    本文首发地址:Angular4.0.0正式发布,附新特性及升级指南 作者|孙薇 编辑|尾尾 经历了6个RC版本之后,Angular项目组终于发布了新版,即正式版 Angular 4.0.0.新版的 A ...

  7. AppBox_v2.0完整版免费下载,暨AppBox_v3.0正式发布!

    文章更新: AppBox v6.0中实现子页面和父页面的复杂交互 AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox ...

  8. Django 1.6.0 正式发布,大幅改进事务处理

    Django 1.6.0 正式发布了,查看官方发行说明. 下载地址:Django-1.6.tar.gz ,也可通过 pip 安装: pip install Django==1.6 要求 Python ...

  9. Apache Spark2.0正式发布

    Apache Spark2.0正式发布 7月26日起Databricks开始提供Apache Spark 2.0的下载,这个版本是基于社区在过去两年的经验总结而成,不但加入了用户喜爱的功能,也修复了之 ...

  10. avalon1.0正式发布

    2013年最后的收成:avalon1.0正式发布 大半年前我就说过,MVVM是前端究极的解决方案,因此之后我大多数时间都在折腾avalon,成立了专门的QQ群与感兴趣的一起讨论.感谢第一批吃螃蟹的人, ...

随机推荐

  1. C#和C++差异化对比

    这里只记录和C++面向对象的区别,也并无比较成分,只做差异化学习使用. 1. 访问修饰符区别:多了一个Internal:成员仅能被同一个项目中的代码访问. 2. 字段的访问:增加了Get,Set访问器 ...

  2. pycharm2019.3.1版本需要的JetBrains Runtime 11不支持windows 32位系统。

    提示信息显示安装pycharm2019.3.1版本需要的JetBrains Runtime 11不支持windows 32位系统. 2.更换pycharm社区版的安装版本 百度找到解决办法,参考文章& ...

  3. Android 自定义View (二)

    一.前言 上节 通过一个简单的旋转环对自定义view作了一个基本的认识,本文将大致讲解下实现的思路以及对该view的一些可能的改进. 二.思路 主要通过重写 view 中的 onDraw() 方法,利 ...

  4. IT工具知识-09:OpenWrt设置旁路由

    0.使用背景 设备:N1 固件:filppy打包的60+ 1.使用方法 1.1知道主路由的IP地址(例如192.168.1.1) 1.2在OpenWrt管理界面下进行设置 进入OpenWrt管理界面 ...

  5. websocket 数据分析

    WebSocket是一种通过单个TCP连接提供全双工通信信道的协议.2011年,IETF将WebSocket协议标准化为RFC 6455,W3C正在对Web IDL中的WebSocket API进行标 ...

  6. decay_rate, decay_steps ,batchsize,iteration,epoch

    (96条消息) decay_rate, decay_steps ,batchsize,iteration,epoch_hellocsz的博客-CSDN博客_decay_steps (1)batchsi ...

  7. 【Leetcode】 剑指offer:字符串(简单)--Day03

    剑指 Offer 05. 替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 逐字符遍历原字符串,遍历过程中对存放结果的字符串分情况更新. class Solu ...

  8. binder机制分析

    1. binder基本概念 1.1 特点 1)binder 是一种基于C/S通信模式的IPC(Inter_Process Communication). 2)在传输过程中近需要一次copy,为发送添加 ...

  9. UGUI按Tab键切换输入框

    脚本挂在输入框的父物体上即可 [code]csharpcode: using System.Collections; using System.Collections.Generic; using U ...

  10. 今日Python练习--正则表达式的相关练习import re

    1.如何利用Python在文本中国提取手机号码 # 如何利用Python在文本中提取手机号码 import re content="白日依山尽,黄河入180320213699999909海流 ...