Sobes.tech
Junior — Middle

Ako implementovať prenos hodnôt argumentov do funkcie, ak parametre neboli explicitne odovzdané pri volaní?

sobes.tech AI

Odpoveď od AI

V jazyku Go nie je podpora pre predvolených parametrov ako v niektorých iných jazykoch. Na implementáciu odovzdávania hodnôt argumentov, ak parametre neboli výslovne odovzdané, sa zvyčajne používajú jeden z nasledujúcich prístupov:

  1. Použitie variabilných parametrov (...) — umožňuje odovzdať ľubovoľný počet argumentov a vo vnútri funkcie skontrolovať, či boli odovzdané, a v prípade potreby nastaviť predvolené hodnoty.
func príklad(args ...int) {
    var hodnota int
    if len(args) > 0 {
        hodnota = args[0]
    } else {
        hodnota = 42 // predvolená hodnota
    }
    fmt.Println(hodnota)
}
  1. Odovzdanie štruktúry s nastaveniami — vytvorí sa štruktúra s parametrami a ak polia nie sú vyplnené, vo vnútri funkcie sa nastavujú predvolené hodnoty.
type Config struct {
    Param int
}

func príklad(cfg Config) {
    if cfg.Param == 0 {
        cfg.Param = 42 // predvolená hodnota
    }
    fmt.Println(cfg.Param)
}
  1. Použitie ukazovateľov a kontrola na nil — ak je parameter odovzdaný ako ukazovateľ, môže sa skontrolovať, či bol odovzdaný, a nastaviť predvolenú hodnotu.

Takto sa v jazyku Go zvyčajne implementuje správanie predvolených parametrov pomocou ďalších kontrol vo vnútri funkcie, pretože syntax pre predvolené parametre neexistuje.