首页 >后端开发 >Golang >为什么 Go 中的字符串范围查找返回符文,而索引返回字节?

为什么 Go 中的字符串范围查找返回符文,而索引返回字节?

Barbara Streisand
Barbara Streisand原创
2024-12-27 20:12:32618浏览

Why Does Ranging Over a String in Go Return Runes, While Indexing Returns Bytes?

Why Range Over String Returns Runes, Byte by Index

According to the Go documentation and our own tests, when ranging over a string, the elements obtained are of type rune, whereas indexing into the string using str[index] yields bytes.

The core reason for this distinction stems from the definition of the string type. A string represents a sequence of bytes, and accessing individual bytes is possible through indexing.

另一方面,range子句用于for语句中,它允许遍历string中的Unicode码点。从0字节索引开始,迭代将返回每个UTF-8编码码点的第一个字节索引,以及对应的码点值(rune类型)。

如果您希望遍历字符串中的字节而不是码点,有几种选择:

  • 使用常规for循环遍历0到len(s)-1的索引。
  • 使用for i, b := range []byte(s)将字符串转换为字节切片,然后遍历字节。

这些替代方法提供了对字节的直接访问,而不会牺牲代码的可读性。

以上是为什么 Go 中的字符串范围查找返回符文,而索引返回字节?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn