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ý.