Go 字符串中的字节访问和转换
在 Go 中,字符串存储 UTF-8 编码的字节,而不是字符或符文。访问字符串的元素(表示为 str[i])会返回一个字节(byte 或 uint8),而不是将其转换为符文。
当使用 for ... range 构造迭代字符串时,您可以可以访问字节或符文。索引字符串(例如 str[i])直接访问字节,而没有转换的循环(for i := range str)则迭代符文。
性能注意事项
使用 []byte(str) 将字符串转换为字节切片并不执行实际的复制;它已经被优化掉了。因此,所提供的两种方法之间没有性能差异:
str := "large text" for i := range str { // use str[i] }
str := "large text" str2 := []byte(str) for _, s := range str2 { // use s }
但是,为了获得最大性能和代码清晰度,建议使用与代码意图相匹配的方法:
字符迭代
在字符串中迭代符文字符时,请务必注意多字节字符,例如Unicode 字符可以使用底层 UTF-8 编码中的多个字节来表示。 for ... range str 语法会自动处理此问题,在每次迭代时返回字节索引和字符(符文)值。
其他资源
以上是如何访问 Go 字符串中的字节和符文?的详细内容。更多信息请关注PHP中文网其他相关文章!