Go 中的 rune
是什么?
我一直在谷歌搜索,但 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
在这里是如何工作的。
原文由 user2671513 发布,翻译遵循 CC BY-SA 4.0 许可协议
Rune 文字只是 32 位整数值( _但是它们是无类型常量,因此它们的类型可以改变_)。它们代表 unicode 代码点。例如,符文文字
'a'
实际上是数字97
。因此,您的程序几乎等同于:
如果您查看 Unicode 映射,这应该很明显,它与该范围内的 ASCII 相同。此外,32 实际上是字符的大写和小写代码点之间的偏移量。因此,通过将
32
添加到'A'
,您将得到'a'
,反之亦然。