Sobes.tech
Junior — Middle

Jak implementovat předání hodnot argumentů do funkce, pokud parametry nebyly při volání výslovně předány?

sobes.tech AI

Odpověď od AI

V jazyce Go není podpora pro výchozí parametry jako v některých jiných jazycích. Aby bylo možné implementovat předávání hodnot argumentů, pokud parametry nebyly výslovně předány, obvykle se používá jeden z následujících přístupů:

  1. Použití variabilních parametrů (...) — umožňuje předat libovolný počet argumentů a uvnitř funkce zkontrolovat, zda byly předány, a případně nastavit výchozí hodnoty.
func příklad(args ...int) {
    var val int
    if len(args) > 0 {
        val = args[0]
    } else {
        val = 42 // výchozí hodnota
    }
    fmt.Println(val)
}
  1. Předání struktury s nastaveními — vytvoří se struktura s parametry a pokud pole nejsou vyplněna, uvnitř funkce se nastaví výchozí hodnoty.
type Config struct {
    Param int
}

func příklad(cfg Config) {
    if cfg.Param == 0 {
        cfg.Param = 42 // výchozí hodnota
    }
    fmt.Println(cfg.Param)
}
  1. Použití ukazatelů a kontrola na nil — pokud je parametr předán jako ukazatel, lze zkontrolovat, zda byl předán, a nastavit výchozí hodnotu.

Tímto způsobem se v jazyce Go obvykle implementuje chování výchozích parametrů pomocí dodatečných kontrol uvnitř funkce, protože syntaxe pro výchozí parametry neexistuje.