Что такое rune
в Go?Что такое руна?
Я прибегая к помощи, но Golang говорит только в одной строке: rune
является псевдонимом для int32
.
Но как же целые числа используются повсюду, как обменные футляры?
Ниже приведена функция swapcase. Что все <=
и -
?
И почему у switch
нет никаких аргументов?
&&
должно означать и, но что такое r <= 'z'
?
func SwapRune(r rune) rune {
switch {
case 'a' <= r && r <= 'z':
return r - 'a' + 'A'
case 'A' <= r && r <= 'Z':
return r - 'A' + 'a'
default:
return r
}
}
Большинство из них из http://play.golang.org/p/H6wjLZj6lW
func SwapCase(str string) string {
return strings.Map(SwapRune, str)
}
Я понимаю, что это отображение rune
в string
так, что он может вернуть выгружена строку. Но я не понимаю, как работает rune
или byte
.
Это очевидно работает только для символов ASCII, а не для расшифрованных символов, таких как «ä», не говоря уже о более сложных случаях, таких как «ı» (U + 0131). Go имеет специальные функции для отображения в нижнем регистре, например, 'unicode.ToLower (r rune) rune'. – topskip
И добавить к правильному ответу @ topskip функцию SwapCase, которая работает для всех кодовых точек, а не просто az: 'func SwapRune (r rune) rune {if unicode.IsUpper (r) {r = unicode.ToLower (r)} else {r = unicode.ToUpper (r)}; return r} ' – ANisus
Руны - это значения int32. Вот и весь ответ. Они не «отображаются» _. – thwd