1
vy0b0x 2019-08-21 02:02:36 +08:00
先通过反射获取空接口变量的类型 检查是否为 channel
确认是 channel 之后获取此变量在内存中的位置 也就是制造了一个指针 注释是 channel 的数据结构 unsafe.Sizeof(uint(0))*2 是跳过 qcount 和 dataqsiz unsafe.Sizeof(unsafe.Pointer(uintptr(0))) 是跳过 buf unsafe.Sizeof(uint16(0))是跳过 elemsize *(*uint32)(unsafe.Pointer(cptr))取得结构中 closed 地址的数据 检查是否大于 0 可以先学 c 语言 看这些就容易很多了 |
2
reus 2019-08-24 09:07:03 +08:00
垃圾代码,要是 chan 的实现变了,这个代码就会无声无息地返回错误结果。
不用学,免得写出这种半桶水的东西坑别人。 |