字符串的元素具有字节类型,可以使用通常的索引操作进行访问。
如何将字符串元素获取为 char ?
“一些”[1] -> “o”
最简单的解决方案是将其转换为 runes 数组:
var runes = []rune("someString")
请注意,当您对字符串进行迭代时,您不需要进行转换。请参阅Effective Go中的此示例:
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
Go 字符串通常但不一定是 UTF-8 编码的。在它们是 Unicode 字符串的情况下,术语“char[acter]”非常复杂,并且没有符文(代码点)和 Unicode 字符的一般/唯一双射。
无论如何,人们可以轻松地使用切片中的代码点(符文)并通过转换使用索引:
package main
import "fmt"
func main() {
utf8 := "Hello, 世界"
runes := []rune(utf8)
fmt.Printf("utf8:% 02x\nrunes: %#v\n", []byte(utf8), runes)
}
也在这里:http ://play.golang.org/p/qWVSA-n93o
注意:通常希望通过索引访问 Unicode“字符”是一个设计错误。大多数文本数据是按顺序处理的。
另一种选择是包装utf8string
:
package main
import "golang.org/x/exp/utf8string"
func main() {
s := utf8string.NewString("")
t := s.At(2)
println(t == '')
}