Junior — Middle
Kako je implementirana transmisija podrazumevanih vrednosti u parametrima funkcija u jeziku Go?
sobes.tech АИ
Одговор од АИ
U jeziku Go nema ugrađene podrške za funkcijske parametre sa podrazumevanim vrednostima, kao u nekim drugim jezicima (npr. Python ili C++). Da biste implementirali slično ponašanje, obično se koristi jedan od sledećih pristupa:
- Preopterećenje funkcija putem promenljivih parametara — proslediti funkciji promenljiv broj argumenata i proveriti njihovo prisustvo unutar funkcije:
func greet(name string, messages ...string) {
msg := "Hello"
if len(messages) > 0 {
msg = messages[0]
}
fmt.Println(msg, name)
}
// Pozivi:
greet("Alice") // Hello Alice
greet("Bob", "Hi") // Hi Bob
- Korišćenje struktura sa podešavanjima — proslediti funkciji strukturu sa parametrima, gde se mogu postaviti podrazumevane vrednosti pri kreiranju:
type Config struct {
Timeout int
}
func doSomething(cfg Config) {
if cfg.Timeout == 0 {
cfg.Timeout = 30 // podrazumevana vrednost
}
// ...
}
// Poziv:
doSomething(Config{})
- Kreiranje pomoćnih funkcija-konstruktora sa različitim skupovima parametara.
Na ovaj način, u Go-u, podrazumevane vrednosti se implementiraju putem eksplicitne logike unutar funkcije ili putem struktura, a ne putem sintakse jezika.