Программа выполнит 10000 итераций, в каждой из которых вызывается функция networkRequest(), которая делает паузу на 1 миллисекунду (эмуляция сетевого запроса) и увеличивает глобальную переменную count на 1.
// Что выведет следующая программа и сколько она будет выполняться по времени??
Программа выполнит 10000 итераций, в каждой из которых вызывается функция networkRequest(), которая делает паузу на 1 миллисекунду (эмуляция сетевого запроса) и увеличивает глобальную переменную count на 1.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
// Что выведет следующая программа и сколько она будет выполняться по времени??
package main
import ( "fmt" "time" )
const numRequests = 10_000
var count int
func networkRequest() { time.Sleep(time.Millisecond) // Эмуляция сетевого запроса.
count++
}
func main() { for i := 0; i < numRequests; i++ { networkRequest() }
fmt.Println(count) // 10_000
}
Ответ
Программа выполнит 10_000 итераций, в каждой из которых вызывается функция networkRequest(), которая делает паузу на 1 миллисекунду (эмуляция сетевого запроса) и увеличивает глобальную переменную count на 1.
Вывод программы будет:
10000
По времени выполнение примерно составит 10_000 миллисекунд, то есть около 10 секунд, так как вызовы networkRequest() идут последовательно, и каждый задерживается на 1 мс.
Если бы запросы выполнялись параллельно (например, с использованием горутин), время могло бы значительно сократиться.