Я пишу анализатор протокола DNS в golang, идея заключается в том, чтобы использовать карту как этотДизайн шаблонов для канала карты?
var tidMap map[uint16] (chan []byte)
Так что для tidMap
карты, ключ является TID (идентификатор транзакции), значение канала массива байт.
Идея состоит в том, что goroutine попытается получить значение из канала, другой goroutine попытается прочитать байты, прослушивая каждый входящий пакет, и как только он найдет идентификатор транзакции, задает данные ответа в tidMap, поэтому прежний goroutine продолжит обрабатывать ответ.
Одна из проблем с дизайном заключается в том, что мне нужно убедиться, что канал имеет длину буфера 1, поэтому дополнительные значения могут быть введены в канал без блокировки.
Итак, как я могу указать длину буфера канала в декларации tidMap
?
var tidMap map[int] make(chan int, 1)
Здесь вы не можете использовать make()
.
хорошо я понял это ! http://play.golang.org/p/-zT8vLvBff Основным препятствием является то, что я постоянно пытаюсь использовать '<-' вместо' = 'при назначении значений, поэтому застрял, потому что не где указать длину буфера. – est