1 回答
TA贡献1829条经验 获得超6个赞
Go 编程语言规范
对于语句
对于带有范围子句的语句
对于字符串值,“范围”子句从字节索引 0 开始迭代字符串中的 Unicode 代码点。在连续迭代中,索引值将是连续 UTF-8 编码代码点的第一个字节的索引符文类型的字符串和第二个值将是相应代码点的值。如果迭代遇到无效的 UTF-8 序列,第二个值将为 0xFFFD,即 Unicode 替换字符,下一次迭代将在字符串中前进一个字节。
在 Go 中,一个字符是一个 Unicode 代码点,一个 Go 类型rune
( 的别名int32
)。Gostring
用于以 UTF-8 编码形式存储 Unicode 代码点。
Go 编程语言规范
转换
与字符串类型之间的转换
将有符号或无符号整数值转换为字符串类型会生成一个包含整数的 UTF-8 表示形式的字符串。有效 Unicode 代码点范围之外的值将转换为“\uFFFD”。
string('a') // "a"
string(-1) // "\ufffd" == "\xef\xbf\xbd"
string(0xf8) // "\u00f8" == "ø" == "\xc3\xb8"
type MyString string
MyString(0x65e5) // "\u65e5" == "日" == "\xe6\x97\xa5"
例如,
package main
import (
"fmt"
)
func main() {
helloworld := "Hello, 世界"
fmt.Println(helloworld)
for i, r := range helloworld {
fmt.Println(i, r, string(r))
}
}
游乐场:https://play.golang.org/p/R5sBeGiJzR4
输出:
Hello, 世界
0 72 H
1 101 e
2 108 l
3 108 l
4 111 o
5 44 ,
6 32
7 19990 世
10 30028 界
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报