Предположим, я анализирую какой-то ввод с помощью следующих трех методов:
func parseHeader ([]byte) []byte
func parseBody ([]byte) []byte
func parseFooter ([]byte) []byte
Все они анализируют определенную часть одного и того же ввода и возвращают его как []byte
, поэтому их можно использовать следующим образом:
i := []byte( /* the input */ )
b := new(bytes.Buffer)
b.Write(parseHeader(i))
b.Write(parseBody(i))
b.Write(parseFooter(i))
Теперь я хотел бы сделать эти 3 процесса параллельными с помощью каналов. Моя идея состояла в том, чтобы передать канал этим функциям для записи, но как я могу убедиться, что они будут писать в канал в правильном порядке? (т. е. что тело записывается в канал < em>после заголовка и нижнего колонтитула после тела)