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回答

ccmouse

2018-08-07

这里有一个解码的过程。在原字符串中,这个字符在utf-8里面有三个字节。这句for会把这三个字节拿出来,转成unicode,这是另一种编码。这种一般是两个字节。然后rune类型有四个字节长度,因此会在前面补0后给到四个字节的ch里面。
所以i后移3,ch是四字节

1
1
aibo
非常感谢老师!
2018-08-08
共1条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程