该语句 `(go 语言中的显式类型转换,将一个双向通道 `chan delivery` 转换为只接收通道 `
在 Go 中,通道类型具有方向性:
上述转换 (安全地降级为只读视图 。这种转换是合法且单向的——Go 允许从双向通道隐式或显式转换为单向子类型,但不允许反向转换(即不能把
✅ 合法示例:
ch := make(chan int) // chan int(双向) roCh := (<-chan int)(ch) // ✅ 显式转为只接收通道 // ch2 := (chan int)(roCh) // ❌ 编译错误:无法从 <-chan int 升级为 chan int
⚠️ 注意事项:
总结:该转换是 Go 类型系统对通道方向性的关键体现,属于零开销、强语义的编程实践,广泛用于构建清晰、健壮的并发接口。