Sobes.tech
Junior — Middle

Ako rozlíšiť použitie Context.TODO od Context.Background v kóde, a v ktorých prípadoch sa tieto funkcie používajú?

sobes.tech AI

Odpoveď od AI

V jazyku Go context.Background() a context.TODO() vracajú kontext, ale používajú sa v rôznych situáciách:

  • context.Background() — je základný, prázdny kontext, ktorý sa zvyčajne používa ako koreňový kontext v hlavných funkciách, testoch alebo pri inicializácii. To znamená, že kontext nie je zrušený a neobsahuje hodnoty.

  • context.TODO() — sa používa ako dočasný zástupný symbol na miestach v kóde, kde kontext ešte nie je definovaný alebo nebolo rozhodnuté, aký kontext použiť. Je to signál pre vývojárov, že je potrebné neskôr o tom premýšľať a nahradiť ho vhodným kontextom.

Príklad:

func main() {
    ctx := context.Background() // koreňový kontext
    process(ctx)
}

func process(ctx context.Context) {
    // ak ešte nevieme, aký kontext odovzdať ďalej
    childCtx := context.TODO()
    doSomething(childCtx)
}

Zhrnutie:

  • Používajte Background() ako koreňový kontext.
  • Používajte TODO() ako dočasný zástupný symbol, keď kontext ešte nie je definovaný.