什么是符文?
什么是rune
Go?
我一直在谷歌搜索,但Golang只说了一行: rune
是的别名int32
。
但是,为什么像交换案例一样在各处使用整数呢?
以下是函数交换案例。什么都<=
和-
?
为什么没有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
在这里工作。
回答:
( 但是它们是未类型化的常量,因此它们的类型可以更改
)。它们代表unicode代码点。例如,符文文字'a'
实际上就是数字97
。
因此,您的程序几乎等同于:
package mainimport "fmt"
func SwapRune(r rune) rune {
switch {
case 97 <= r && r <= 122:
return r - 32
case 65 <= r && r <= 90:
return r + 32
default:
return r
}
}
func main() {
fmt.Println(SwapRune('a'))
}
如果要查看Unicode映射,该映射与该范围内的ASCII相同,应该很明显。此外,实际上32是字符的大写和小写代码点之间的偏移量。因此,通过添加32
到'A'
,你'a'
,反之亦然。
以上是 什么是符文? 的全部内容, 来源链接: utcz.com/qa/408384.html