> Как понять, что код отработал правильно (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Ozon

Стек: Go

> Пример ответа

В Go проверка корректности выполнения кода строится на нескольких уровнях. Основные подходы:

  1. Обработка ошибок (idiomatic Go) - каждая функция, которая может завершиться с ошибкой, возвращает error как последнее значение. Проверяем: if err != nil { return err }. Если ошибка не возвращается, код считается успешным.

  2. Возвращаемые значения - для функций без ошибок (например, strings.TrimSpace) проверяем результат по контракту: ожидаем конкретное значение или диапазон.

  3. Логирование и мониторинг - в production используем structured logging (например, log/slog) с уровнями Info для успеха и Error для сбоев. Метрики (через Prometheus) показывают количество успешных/ошибочных запросов.

  4. Тестирование - пишем unit-тесты с testing пакетом, где явно проверяем ожидаемые результаты через assert или require. Для интеграционных тестов - запускаем код с известными входными данными.

  5. Паника и recover - в Go паника - исключительная ситуация. Если код не паникует (или паника перехвачена и обработана), это признак корректности, но не единственный.

Пример для функции чтения файла:

GO
data, err := os.ReadFile("config.json")
if err != nil {
log.Error("не удалось прочитать файл", "error", err)
return err
}
// Если дошли сюда - код отработал без ошибок
log.Info("файл прочитан успешно", "size", len(data))

Ключевой принцип: явная проверка ошибок и возвращаемых значений, а не предположение об успехе.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью