chore: 初始化仓库,排除二进制文件和覆盖率文件
This commit is contained in:
47
pkg/utils/format.go
Normal file
47
pkg/utils/format.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"go.uber.org/zap"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// FormatUUID 将UUID格式化为带连字符的标准格式
|
||||
// 如果输入已经是标准格式,直接返回
|
||||
// 如果输入是32位十六进制字符串,添加连字符
|
||||
// 如果输入格式无效,返回错误
|
||||
func FormatUUID(uuid string) string {
|
||||
// 如果为空,直接返回
|
||||
if uuid == "" {
|
||||
return uuid
|
||||
}
|
||||
|
||||
// 如果已经是标准格式(8-4-4-4-12),直接返回
|
||||
if len(uuid) == 36 && uuid[8] == '-' && uuid[13] == '-' && uuid[18] == '-' && uuid[23] == '-' {
|
||||
return uuid
|
||||
}
|
||||
|
||||
// 如果是32位十六进制字符串,添加连字符
|
||||
if len(uuid) == 32 {
|
||||
// 预分配容量以提高性能
|
||||
var b strings.Builder
|
||||
b.Grow(36) // 最终长度为36(32个字符 + 4个连字符)
|
||||
|
||||
// 使用WriteString和WriteByte优化性能
|
||||
b.WriteString(uuid[0:8])
|
||||
b.WriteByte('-')
|
||||
b.WriteString(uuid[8:12])
|
||||
b.WriteByte('-')
|
||||
b.WriteString(uuid[12:16])
|
||||
b.WriteByte('-')
|
||||
b.WriteString(uuid[16:20])
|
||||
b.WriteByte('-')
|
||||
b.WriteString(uuid[20:32])
|
||||
|
||||
return b.String()
|
||||
}
|
||||
|
||||
// 如果长度不是32或36,说明格式无效,直接返回原值
|
||||
var logger *zap.Logger
|
||||
logger.Warn("[WARN] UUID格式无效: ", zap.String("uuid:", uuid))
|
||||
return uuid
|
||||
}
|
||||
Reference in New Issue
Block a user