Да, это возможно.Следует учитывать жизненный цикл данных, которые вы отправляете на канал.В настоящее время канал не буферизован, поэтому для отправки:
channel1 <- 1
требуется получение:
case <-channel1:
Что означает, что запись будетставить в очередь и блокировать, пока они не будут готовы к обработке.Проблема заключается в том, что, как только будет получен прием, обработчик HTTP завершит работу, а 200 предложит клиенту, что операция прошла OK
и прошла успешно.Проблема в том, что другая подпрограмма go с приемом может быть неполной, поскольку она выполняется одновременно с процедурой обработчика.Право собственности на данные было передано другой программе.Так что же произойдет, если другие ошибки выполнения, но клиент думает, что операция завершилась успешно?
Это становится более очевидным, если канал буферизируется, когда процедура обработчика http отправляет немедленно, а затем возвращает.Существует множество вариантов решения этой проблемы, но если ее не решить, это может привести к незначительной потере данных и логическим ошибкам.