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 }