range 作用于字符串,返回的k和v,v是rune类型,rune是uint32的等价类型。 其中的k不是rune数组的下标,而是byte数组的下标,所以i是不连续的 对于中文字符,rune类型就是其Unicode编码。
go语言接口有两种表现形式,对应到底层实现也是用两种不用的数据结构表示的。对没有定义方法的接口,底层用 用eface结构表示,对定义的有方法的接口,底层用iface结构表示。这里两种结构定义在 runtime/runtime2.go中 eface和iface都占16字节,eface只有2个字段,因为它代表的是没有方法的接口,只需要存储被赋值对象的类型和数据即可,正好对应到这里的_type 和 data字段。iface代表含有方法的接口,定义里面的 data字段也是表示被存储对象的值,注意这里的值是原始值的一个拷贝,如果原始值是一个值类型,这里的data是执行的数据时原始数据的一个副本。 // 空接口,表示不含有method的interface结构 type eface struct { // 赋值给空接口变量的类型型,_type是基础数据类型的抽象 _type *_type // 指向数据的指针,对于值类型变量,指向的是值拷贝一份后的地址 // 对于指针类型变量,指向的是原数据地址 data unsafe.Pointer }
curl -X GET -w “\ntime_namelookup:%{time_namelookup}\ntime_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n” xxxx