for i, ch := range s {fmt.Printf("(%d %X)", i, ch)} 。
来源:3-6 字符和字符串处理

aibo
2018-08-07
ch不是一个rune吗,根据老师您说的由utf-8(3字节)转成unicode(2字节)编码,放入rune中;
rune不是四个字节吗,为什么下标是从3跳到6而不是从3到7呢;
utf-8的话才是3个字节啊....
写回答
1回答
-
这里有一个解码的过程。在原字符串中,这个字符在utf-8里面有三个字节。这句for会把这三个字节拿出来,转成unicode,这是另一种编码。这种一般是两个字节。然后rune类型有四个字节长度,因此会在前面补0后给到四个字节的ch里面。
所以i后移3,ch是四字节112018-08-08
相似问题