«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Контекст Go — TODO() vs Background() Больше никакой путаницы!

Контекст Go — TODO() vs Background() Больше никакой путаницы!

Опубликовано 6 ноября 2024 г.
Просматривать:422

Go Context — TODO() vs Background() No more confusing!

В Go контекстный пакет помогает управлять значениями в области запроса, сигналами отмены и сроками.
Два распространенных способа запуска контекста — это context.TODO() и context.Background().
Хотя они ведут себя одинаково, служат разным целям.

context.Background()

context.Background() используется по умолчанию, когда вам не требуется какая-либо специальная обработка (например, отмена или сроки).
Он часто используется в main, init или при инициализации операций, которым не требуется более конкретный контекст.

Пример:

 func main() {
     ctx := context.Background()
     server := http.Server{Addr: ":8080", BaseContext: func(net.Listener) context.Context {
         return ctx
     }}
     log.Fatal(server.ListenAndServe())
 }

В этом примере context.Background() используется для установки базового контекста для HTTP-сервера.

контекст.ТОДО()

context.TODO() — это контекст-заполнитель. Используйте его, если вы не уверены в том, какой контекст предоставить, или если планируете провести рефакторинг позже.

Пример:

 func processOrder() {
     ctx := context.TODO() // Placeholder, decision on context pending
     err := db.SaveOrder(ctx, orderData)
     if err != nil {
         log.Println("Failed to save order:", err)
     }
 }

Здесь context.TODO() временно используется для операции с базой данных, пока не будет определен более конкретный контекст.

Ключевые различия

Обе функции возвращают пустой контекст, но выражают разные намерения:

  • context.Background(): используется, когда вы уверены, что специальные функции контекста не нужны.
  • context.TODO(): временный контекст-заполнитель, сигнализирующий о будущих изменениях.

Заключение

Когда использовать context.Background():

  • При инициализации основных служб, таких как HTTP-серверы или подключения к базе данных.
  • Когда нет необходимости в отмене, сроках или стоимости.

Когда использовать context.TODO():

  • При рефакторинге, и вы еще не определились с контекстом.
  • При реализации кода на ранней стадии, требующего будущих улучшений.
Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/zakariachahboun/are-you-confused-about-contexttodo-vs-contextbackground-heres-what-you-need-to-know-2h46?1 Если есть какие-либо нарушения , пожалуйста, свяжитесь с Study_golang @163.comdelete
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3