> Что делать, если нельзя писать логи внутри функции fetch, а можно только в функции main? (Go)

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

Компании: Wildberries

Стек: Go

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

В такой ситуации нужно передавать логирование из main в функцию fetch через параметры или контекст. Самый простой способ - передать логгер как аргумент:

GO
func fetch(url string, logger *log.Logger) (*http.Response, error) {
logger.Printf("Запрос к %s", url)
resp, err := http.Get(url)
if err != nil {
logger.Printf("Ошибка: %v", err)
return nil, err
}
return resp, nil
}
func main() {
logger := log.New(os.Stdout, "FETCH: ", log.LstdFlags)
resp, err := fetch("https://example.com", logger)
if err != nil {
logger.Fatal(err)
}
defer resp.Body.Close()
}

Более продвинутый вариант - использовать контекст с логгером через context.WithValue, но это избыточно для простых случаев. Главное - не создавать глобальный логгер, а явно передавать зависимость.

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

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