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类型
本文来自博客园,作者:北方Cc,转载请注明原文链接:https://www.cnblogs.com/beifangcc/p/16573529.html

浙公网安备 33010602011771号