Какой текст появится в консоли при запуске программы №19

count будет 1000: вызовы последовательные. Println не подставляет значения вместо %v, поэтому форматная строка печатается буквально.

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

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

count будет 1000: вызовы последовательные. Println не подставляет значения вместо %v, поэтому форматная строка печатается буквально.

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

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

Условие

Укажите, что именно выведет программа после её выполнения.

import (
        "fmt"
        "time"
        )

const numRequests = 1000

var count int

func networkRequest() {
    time.Sleep(time.Millisecond)
    
    count++;        
}

func main() {
    defer timer() ()
        
    for i := 0 ; i < numRequests; i++ {
        networkRequest()
    }
}

func timer() func () {
    start :=time.Now()
    
    return func(){
        fmt.Println("count %v took %v\n", count, time.Since(start))
       }   
}

Ответ

count будет 1000: вызовы последовательные. Println не подставляет значения вместо %v, поэтому форматная строка печатается буквально.

Выражение defer timer()() сразу запускает timer, фиксирующий время, а возвращённую функцию откладывает до выхода main. Тогда count уже равен 1000. Суммарная задержка не меньше примерно секунды; точная длительность зависит от выполнения.

В строке формата содержится перевод строки, после него Println выведет через пробелы число и длительность. Для задуманной одной строки нужен fmt.Printf("count %v took %v\n", count, time.Since(start)). Гонок здесь нет, пока networkRequest не запускается параллельно.

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

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

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

Подробнее