参考答案
结论:channel底层是runtime.hchan结构体。关键字段:1.qcount当前元素数;2.dataqsiz缓冲区容量,buf指向环形数组;3.sendx/recvx读写索引;4.recvq/sendq为等待的goroutine链表(sudog);5.lock保护并发;6.elemtype/elemsize元素类型大小。无缓冲时dataqsiz=0,buf=nil,收发直接交接。发送时若队列空且缓冲满则goroutine挂入sendq;接收反之。关闭时唤醒所有等待者。该结构支撑CSP模型。