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