the channel and right-hand-side expressions of send statements are evaluated exactly once, in source order, upon entering the "select" statement. Если я правильно понимаю, это означает, что перед выбором любого кейса (или дефаилт), функция replicas[i](query) в любом случае будет исполнена? Если да, то тогда как работает паттерн по досрочному завершению?
` searchReplica := func(i int) {
select {
case c <- replicas[i](query):
case <- done:
}
}`
верно. Ведь логично же что сначала нужно выяснить что посылать, а потом уже куда) а октуда мы узнаем что посылать если функция возвращает нам непредсказуемый результат?)
Обсуждают сегодня