字符串的元素具有字节类型,可以使用 通常的索引操作。
如何将字符串元素作为char?
“some”[1] - > “○”
答案 0 :(得分:10)
最简单的解决方案是将其转换为符文数组:
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
答案 1 :(得分:4)
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“字符”的愿望通常是设计错误。大多数文本数据都是按顺序处理的。
答案 2 :(得分:0)
另一个选项是包 utf8string
:
package main
import "golang.org/x/exp/utf8string"
func main() {
s := utf8string.NewString("?????")
t := s.At(2)
println(t == '?')
}