Junior — Middle
Kako implementirati prenos vrednosti argumenata u funkciju ako parametri nisu bili eksplicitno prosleđeni prilikom poziva?
sobes.tech АИ
Одговор од АИ
U jeziku Go nema podrške za podrazumevane parametre kao u nekim drugim jezicima. Da biste implementirali prenos vrednosti argumenata kada parametri nisu eksplicitno prosleđeni, obično se koristi jedan od sledećih pristupa:
- Korišćenje variadnih parametara (
...) — omogućava prenos proizvoljnog broja argumenata, a unutar funkcije se proverava da li su prosleđeni i, po potrebi, postavljaju se podrazumevane vrednosti.
func primer(args ...int) {
var val int
if len(args) > 0 {
val = args[0]
} else {
val = 42 // podrazumevana vrednost
}
fmt.Println(val)
}
- Prenos strukture sa podešavanjima — kreira se struktura sa parametrima, a ako polja nisu popunjena, unutar funkcije se postavljaju podrazumevane vrednosti.
type Config struct {
Param int
}
func primer(cfg Config) {
if cfg.Param == 0 {
cfg.Param = 42 // podrazumevana vrednost
}
fmt.Println(cfg.Param)
}
- Korišćenje pokazivača i provera na nil — ako je parametar prosleđen kao pokazivač, može se proveriti da li je prosleđen i postaviti podrazumevanu vrednost.
Na ovaj način, u jeziku Go, obično se implementira ponašanje podrazumevanih parametara putem dodatnih provera unutar funkcije, jer sintaksa za podrazumevane parametre ne postoji.