Представленный код уже решает задачу: синхронные вызовы printNumber печатают 0, 1, …, 10 по порядку, каждое число на отдельной строке.
Последовательный вывод чисел от 0 до 10
Представленный код уже решает задачу: синхронные вызовы printNumber печатают 0, 1, …, 10 по порядку, каждое число на отдельной строке.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Не меняя внутреннюю логику функции printNumber, реализуйте программу, которая последовательно выводит все целые числа от 0 до 10 включительно, учитывая встроенную паузу в одну секунду.
package main
import (
"fmt"
"time"
)
func main() {
for i := 0; i <= 10; i++ {
printNumber(i)
}
}
func printNumber(num int) {
time.Sleep(time.Second)
fmt.Println(num)
}
Ответ
Представленный код уже решает задачу: синхронные вызовы printNumber печатают 0, 1, …, 10 по порядку, каждое число на отдельной строке.
Каждый вызов сначала ждёт примерно секунду и только потом выводит число, поэтому вся последовательность занимает не менее примерно 11 секунд, плюс накладные задержки. Горутины здесь не нужны. Если добавить go перед вызовом, порядок перестанет быть гарантирован, а main без ожидания может завершиться раньше печати.