【发布时间】:2014-01-23 15:05:04
【问题描述】:
我正在用golang写一个DNS协议解析器,想法是使用这样的映射
var tidMap map[uint16] (chan []byte)
所以对于tidMap map,key 是 tid(交易 ID),value 是一个字节数组通道。
这个想法是一个goroutine会尝试从通道中获取值,另一个goroutine会通过监听每个即将到来的数据包来尝试读取字节,一旦找到事务ID,就会将响应数据设置到tidMap,所以前一个goroutine会继续处理回应。
设计的一个问题是我需要确保通道的缓冲区长度为 1,因此可以将额外的值推入通道而不会阻塞。
那么如何在tidMap 声明中指定通道缓冲区长度?
var tidMap map[int] make(chan int, 1)
你不能在那里使用make()。
【问题讨论】: