docs(readme): 重构 README 文档结构并补充模块说明 - 重新组织 README 内容,明确划分私有仓库设置、功能模块等章节 - 补充 crypto、cache、database、middleware、queue 和 utils 模块的功能简介 - 统一代码示例格式,增加 bash 和 go 语言标识 feat(crypto): 优化 PKCS7 填充与去填充函数实现 - 新增 PKCS7Padding 和 PKCS7UnPadding 函数的详细注释 - 添加对输入参数的有效性校验,提升健壮性 - 修复可能引发越界 panic 的潜在问题 feat(database): 完善数据库连接及初始化逻辑 - 为 NewDatabase、NewMysql 和 NewPostgres 函数添加完整注释 - 修复 MaxOpenConns 配置未正确赋值的问题 - 在获取 *sql.DB 实例时增加错误处理逻辑 - 支持通过 Init 变量在连接建立后执行自定义初始化函数 feat(go.mod): 初始化项目依赖管理并引入核心组件 - 添加项目所需的主要依赖包,包括 gin、gorm、redis、nats 等 - 引入常用的工具库如 uuid、ulid、gopsutil 等 - 自动拉取并锁定所有间接依赖版本 ```
119 lines
2.4 KiB
Go
119 lines
2.4 KiB
Go
package utils
|
||
|
||
import (
|
||
"math"
|
||
"strconv"
|
||
"strings"
|
||
)
|
||
|
||
// String2Int 字符串转Int
|
||
//
|
||
// intStr:数字的字符串
|
||
func String2Int(intStr string) (intNum int) {
|
||
intNum, err := strconv.Atoi(intStr)
|
||
if err != nil {
|
||
return 0
|
||
}
|
||
return
|
||
}
|
||
|
||
// String2Int64 字符串转Int64
|
||
//
|
||
// intStr:数字的字符串
|
||
func String2Int64(intStr string) (int64Num int64) {
|
||
intNum, err := strconv.Atoi(intStr)
|
||
if err != nil {
|
||
return 0
|
||
}
|
||
int64Num = int64(intNum)
|
||
return
|
||
}
|
||
|
||
// String2Float64 字符串转Float64
|
||
//
|
||
// floatStr:小数点数字的字符串
|
||
func String2Float64(floatStr string) (floatNum float64) {
|
||
floatNum, err := strconv.ParseFloat(floatStr, 64)
|
||
if err != nil {
|
||
return 0
|
||
}
|
||
return
|
||
}
|
||
|
||
// String2Float32 字符串转Float32
|
||
//
|
||
// floatStr:小数点数字的字符串
|
||
func String2Float32(floatStr string) (floatNum float32) {
|
||
floatNum64, err := strconv.ParseFloat(floatStr, 32)
|
||
if err != nil {
|
||
return 0
|
||
}
|
||
floatNum = float32(floatNum64)
|
||
return
|
||
}
|
||
|
||
// Int转字符串
|
||
//
|
||
// intNum:数字字符串
|
||
func Int2String(intNum int) (intStr string) {
|
||
intStr = strconv.Itoa(intNum)
|
||
return
|
||
}
|
||
|
||
// Int64转字符串
|
||
//
|
||
// intNum:数字字符串
|
||
func Int642String(intNum int64) (int64Str string) {
|
||
//10, 代表10进制
|
||
int64Str = strconv.FormatInt(intNum, 10)
|
||
return
|
||
}
|
||
|
||
// Float64转字符串
|
||
//
|
||
// floatNum:float64数字
|
||
// prec:精度位数(不传则默认float数字精度)
|
||
func Float64ToString(floatNum float64, prec ...int) (floatStr string) {
|
||
if len(prec) > 0 {
|
||
floatStr = strconv.FormatFloat(floatNum, 'f', prec[0], 64)
|
||
return
|
||
}
|
||
floatStr = strconv.FormatFloat(floatNum, 'f', -1, 64)
|
||
return
|
||
}
|
||
|
||
// Float32转字符串
|
||
//
|
||
// floatNum:float32数字
|
||
// prec:精度位数(不传则默认float数字精度)
|
||
func Float32ToString(floatNum float32, prec ...int) (floatStr string) {
|
||
if len(prec) > 0 {
|
||
floatStr = strconv.FormatFloat(float64(floatNum), 'f', prec[0], 32)
|
||
return
|
||
}
|
||
floatStr = strconv.FormatFloat(float64(floatNum), 'f', -1, 32)
|
||
return
|
||
}
|
||
|
||
// 二进制转10进制
|
||
func BinaryToDecimal(bit string) (num int) {
|
||
fields := strings.Split(bit, "")
|
||
lens := len(fields)
|
||
var tempF float64 = 0
|
||
for i := 0; i < lens; i++ {
|
||
floatNum := String2Float64(fields[i])
|
||
tempF += floatNum * math.Pow(2, float64(lens-i-1))
|
||
}
|
||
num = int(tempF)
|
||
return
|
||
}
|
||
|
||
// interface to string
|
||
func AnyToString(in any) (s string) {
|
||
if in == nil {
|
||
return ""
|
||
}
|
||
|
||
return in.(string)
|
||
}
|