Sobes.tech
Junior — Middle

Aká je úloha operátora defer v jazyku Go a aké sú jeho výhody?

sobes.tech AI

Odpoveď od AI

Operátor defer v jazyku Go sa používa na odložené vykonanie funkcie do okamihu ukončenia okružujúcej funkcie (zvyčajne na uvoľnenie zdrojov alebo vykonanie záverečných akcií).

Výhody defer:

  • Zaručuje vykonanie kódu na konci funkcie, aj keď funkcia skončí chybou alebo panikou.
  • Zlepšuje čitateľnosť kódu tým, že umožňuje písať uvoľnenie zdrojov vedľa ich pridelenia.
  • Umožňuje zabrániť duplikácii kódu na čistenie na rôznych miestach funkcie.

Príklad:

func readFile() error {
    file, err := os.Open("file.txt")
    if err != nil {
        return err
    }
    defer file.Close() // súbor sa zatvorí pri ukončení funkcie

    // práca so súborom
    return nil
}

Tu bude file.Close() automaticky zavolané pri ukončení readFile, bez ohľadu na to, ako funkcia skončí.