3 回答
TA贡献1805条经验 获得超10个赞
符文文字只是 32 位整数值(但它们是无类型常量,因此它们的类型可以改变)。它们代表 unicode 代码点。例如,符文文字'a'实际上是数字97。
因此,您的程序几乎相当于:
package main
import "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',反之亦然。
TA贡献1891条经验 获得超3个赞
我试图保持我的语言简单,以便外行理解rune
。
符文是一个字符。就是这样。
它是单个字符。它是来自世界任何地方任何语言的任何字母表中的字符。
要获取我们使用的字符串
double-quotes ""
或者
back-ticks ``
字符串不同于符文。在符文中我们使用
single-quotes ''
现在符文也是...的别名int32
...呃什么?
rune 是别名的原因int32
是因为我们看到使用如下编码方案
每个字符都映射到某个数字,因此它就是我们要存储的数字。例如,a映射到97,当我们存储该数字时,它只是数字,因此 rune 是 int32 的别名。但不仅仅是任何数字。它是一个包含 32 个“零和一个”或“4”字节的数字。(注:UTF-8 为 4 字节编码方案)
符文与弦有什么关系?
字符串是符文的集合。在以下代码中:
package main
import (
"fmt"
)
func main() {
fmt.Println([]byte("Hello"))
}
我们尝试将字符串转换为字节流。输出是:
[72 101 108 108 111]
我们可以看到组成该字符串的每个字节都是一个符文。
- 3 回答
- 0 关注
- 341 浏览
添加回答
举报