case.go 552 B

12345678910111213141516171819202122
  1. package rest
  2. /*
  3. // CamelToSnake преобразует строку из CamelCase в snake_case.
  4. func camelToSnake(s string) string {
  5. var result bytes.Buffer
  6. var lastIndex int = 0
  7. for i, char := range s {
  8. if i > 0 && unicode.IsUpper(char) && ((i+1 < len(s) && unicode.IsLower(rune(s[i+1]))) || unicode.IsLower(rune(s[i-1]))) {
  9. result.WriteString(strings.ToLower(s[lastIndex:i]))
  10. if lastIndex != i {
  11. result.WriteString("_")
  12. }
  13. lastIndex = i
  14. }
  15. }
  16. result.WriteString(strings.ToLower(s[lastIndex:]))
  17. return result.String()
  18. }
  19. */