package tool import ( "encoding/json" "strings" "unsafe" ) func BytesToString(b []byte) string { return unsafe.String(unsafe.SliceData(b), len(b)) } func StringToBytes(s string) []byte { return unsafe.Slice(unsafe.StringData(s), len(s)) } func CopyString(s string) string { return string([]byte(s)) } // ToSnakeCase 将给定的字符串转换为 snake_case 风格。 // // 参数: // // str: 待转换的字符串,只考虑 ASCII 字符。 func ToSnakeCase(str string) string { if str == "" { return "" } var ( sb strings.Builder isLower = func(c byte) bool { return c >= 'a' && c <= 'z' } isUpper = func(c byte) bool { return c >= 'A' && c <= 'Z' } ) for i := 0; i < len(str); i++ { c := str[i] var prev byte if i > 0 { prev = str[i-1] } var next byte if i < len(str)-1 { next = str[i+1] } if isUpper(c) && (isLower(prev) || isLower(next)) { sb.WriteRune('_') sb.WriteByte(c + ('a' - 'A')) } else if isUpper(c) { sb.WriteByte(c + ('a' - 'A')) } else { sb.WriteRune(rune(c)) } } // 去除首尾下划线 return strings.Trim(sb.String(), "_") } func PrettyJSON(v any) string { b, _ := json.MarshalIndent(v, "", " ") return string(b) }