package rest_gorm 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() }