1234567891011121314151617181920212223242526 |
- 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()
- }
|