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