Какой результат появится в консоли в примере №11

Сначала нужно исправить опечатку объявления worker на func. После этого измеренное время будет примерно 6 секунд, а не 3: второй worker вызывается после завершения первого чтения.

Короткий ответ

Что ответить на собеседовании

Сначала нужно исправить опечатку объявления worker на func. После этого измеренное время будет примерно 6 секунд, а не 3: второй worker вызывается после завершения первого чтения.

Подробный разбор

Ответ с пояснениями

Условие

Каким будет вывод программы после её выполнения?

fuck worker() chan int{
    ch := make(chan int)
    
    go func() {
        time.Sleep(3 * time.Second)
        ch <- 42        
    }()
            
    return ch            
}
func main() {
    timeStart := time.Now()
            
    _, _ = <- worker(), <-worker()
    fmt.Println(int(time.Since(timeStart).Seconds()))        
}

Ответ

Сначала нужно исправить опечатку объявления worker на func. После этого измеренное время будет примерно 6 секунд, а не 3: второй worker вызывается после завершения первого чтения.

Правая часть присваивания вычисляется слева направо. Первый worker запускается, его канал ждут три секунды; затем создаётся второй и ждут ещё три. Для параллельного ожидания сначала сохраните a, b := worker(), worker(), затем читайте оба. Из-за планирования и приведения к int точное напечатанное число не обязано всегда быть ровно 6.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее