Result {
                  
                  
                      ch := make(chan Result)
                  
                  
                      for _, conn := range conns {
                  
                  
                          go func(c Conn) {
                  
                  
                              select {
                  
                  
                              case ch <- c.DoQuery(query):
                  
                  
                              default:
                  
                  
                              }
                  
                  
                          }(conn)
                  
                  
                      }
                  
                  
                      return <-ch
                  
                  
                  }
                  
                  
                  в комментариях указано, что  if the result arrives before the main function has made it to the receive, the send could fail since no one is ready. Разве в этот момент отправка не должна заблокироваться, до того момента когда операция приема из канала return <- ch не будет готова?
                  
                  
                
а DoQuery синхронная функция внутри?
Обсуждают сегодня