Loading

go中string的不同遍历方式

string底层是有byte数组组成的,go中byte数组是int8的别称,也就是对应着ascii
所以可以通过下表的方式来访问其中的一个字符

s:="abc"
//s[0]->a
//s[1]->b
....

但是在学习go的时候还有一个专门的类型rune,用来存储字符,rune使用utf8编码

UTF-8(8位元,Universal Character Set/Unicode Transformation Format)是针对Unicode的一种可变长度字符编码。它可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来处理ASCII字符的软件无须或只进行少部分修改后,便可继续使用。

如果我们输入字符串不在ascii中,我们通过使用下标的方式就无法正确读取到某一个字符了(在java中,每个字符固定占了2字节)
解决方法是使用range,range会自动判断字符的长度进行遍历

s:="abc"
for i,v:=range s{
  ...
}

另外使用range遍历得到的v无论s中有没有其他语言字符v都是rune类型

posted @ 2022-08-10 18:33  北方Cc  阅读(295)  评论(0)    收藏  举报