Go 中通过 Runes 迭代字符串
在 Go 中,你可能会遇到这样的情况:你想通过 Runes 迭代字符串单个符文或 Unicode 代码点。您可能会想使用带有索引 i 的传统 for 循环来访问每个字符:
for i := 0; i < len(str); i++ { dosomethingwithrune(str[i]) // takes a rune }
但是,这种方法无法正常工作,因为 str[i] 返回一个字节 (uint8) 而不是一个符文。要按符文迭代字符串,您需要使用范围语法:
for pos, char := range "日本語" { fmt.Printf("character %c starts at byte position %d\n", char, pos) }
此代码将打印以下输出:
character 日 starts at byte position 0 character 本 starts at byte position 3 character 語 starts at byte position 6
正如Effective Go 的文档所解释的,范围语法“可以为您做更多的工作,通过解析 UTF-8 来分解各个 Unicode 代码点。”这使您可以直接使用符文,从而更轻松地在字符串上执行与 Unicode 相关的操作。
以上是如何在 Go 中通过 Runes 迭代字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!