Junior — Middle
Kuidas rakendada argumentide väärtuste edastamist funktsioonile, kui parameetrid ei olnud otseselt edastatud kutsumise ajal?
sobes.tech AI
Vastus AI-lt
Go keeles ei ole toetust vaikeseadistustele nagu mõnes teises keeles. Argumentide väärtuste edastamise rakendamiseks, kui parameetreid ei ole otseselt edastatud, kasutatakse tavaliselt ühte järgmistest lähenemistest:
- Muutuvate parameetrite (
...) kasutamine — võimaldab edastada mis tahes arvu argumente ning funktsiooni sees kontrollida, kas need on edastatud ning vajadusel määrata vaikeseaded.
func näide(args ...int) {
var väärtus int
if len(args) > 0 {
väärtus = args[0]
} else {
väärtus = 42 // vaikeseadistus
}
fmt.Println(väärtus)
}
- Seadistustega struktuuri edastamine — luuakse struktuur parameetritega ning kui väljad ei ole täidetud, määratakse funktsiooni sees vaikeseaded.
type Config struct {
Param int
}
func näide(cfg Config) {
if cfg.Param == 0 {
cfg.Param = 42 // vaikeseadistus
}
fmt.Println(cfg.Param)
}
- Näidise ja nil kontrolli kasutamine — kui parameeter edastatakse näidisega, saab kontrollida, kas see on edastatud ning määrata vaikeseadistus.
Sellisel viisil rakendatakse Go keeles tavaliselt vaikeseadistuste käitumist täiendavate kontrollidega funktsiooni sees, kuna süntaksit vaikeseadistuste jaoks ei ole olemas.