Sobes.tech
Junior — Middle

Можеш ли да наведеш ситуације или случајеве у којима се користи концепт контекста?

sobes.tech АИ

Одговор од АИ

У Go, концепт контекста (context.Context) се користи за управљање временом живота операција, отказивањем, временским ограничењима и преносом вредности између горутиних.

Главни случајеви употребе:

  • Отказивање операција: на пример, при раду са мрежним захтевима или базама података, може се отказати дуга операција ако клијент прекине захтев.
  • Временска ограничења и timeout-ови: може се поставити максимално време за извршавање операције, након чега ће се она аутоматски отказати.
  • Пренос вредности: на пример, идентификатори захтева, токени аутентификације, метаподаци који су потребни на различитим нивоима позива.

Пример:

func HandleRequest(ctx context.Context) {
    select {
    case <-time.After(5 * time.Second):
        // Извршити рад
    case <-ctx.Done():
        // Операција је отказана или је истекао временски лимит
        return
    }
}

Контекст помаже у писању управљивог и одзивног кода, посебно у апликацијама са више нитова и мрежним апликацијама.