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

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

Barbara Streisand
发布: 2024-12-27 20:12:32
原创
614 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板