Пошаговый вывод чисел с односекундной паузой

Приведённая программа уже решает задачу: синхронные вызовы 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, но и он не гарантирует точного реального времени при задержках выполнения.

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

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

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

Подробнее