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ů:
- 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)
}
- 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)
}
- 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.