go-easy-utils 2.0 正式釋出,全面支援泛型和any

汀風說後端發表於2023-04-13

介紹

這是一個基於 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 

相關文章