请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

for i, ch := range s {fmt.Printf("(%d %X)", i, ch)} 。

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是四字节

1 回复 有任何疑惑可以回复我~
  • 提问者 aibo #1
    非常感谢老师!
    回复 有任何疑惑可以回复我~ 2018-08-08 20:21:58
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号