package rest import ( "bytes" "strings" "unicode" ) // CamelToSnake преобразует строку из CamelCase в snake_case. func CamelToSnake(s string) string { var result bytes.Buffer var lastIndex int = 0 for i, char := range s { if i > 0 && unicode.IsUpper(char) && ((i+1 < len(s) && unicode.IsLower(rune(s[i+1]))) || unicode.IsLower(rune(s[i-1]))) { result.WriteString(strings.ToLower(s[lastIndex:i])) if lastIndex != i { result.WriteString("_") } lastIndex = i } } result.WriteString(strings.ToLower(s[lastIndex:])) return result.String() } // SnakeToCamel преобразует строку из snake_case в CamelCase. func SnakeToCamel(s string) string { var result string words := strings.Split(s, "_") for _, word := range words { w := strings.Title(word) result += w } return result }