Junior — Middle
Kuidas on implementeeritud vaikimisi väärtuste edastamine funktsioonide parameetrites Go keeles?
sobes.tech AI
Vastus AI-lt
Go keeles ei ole sisseehitatud tuge funktsioonide vaikeseadete parameetritele, nagu see on mõnes teises keeles (näiteks Python või C++). Sarnase käitumise rakendamiseks kasutatakse tavaliselt üht järgmistest lähenemistest:
- Funktsioonide ülekoormamine muutuvate parameetritega — edastada funktsioonile muutuv arv argumente ja kontrollida nende olemasolu sisemiselt:
func greet(name string, messages ...string) {
msg := "Hello"
if len(messages) > 0 {
msg = messages[0]
}
fmt.Println(msg, name)
}
// Kutsed:
greet("Alice") // Hello Alice
greet("Bob", "Hi") // Hi Bob
- Seadistustega struktuuride kasutamine — edastada funktsioonile struktuur parameetritega, kus saab määrata vaikeseaded loomise ajal:
type Config struct {
Timeout int
}
func doSomething(cfg Config) {
if cfg.Timeout == 0 {
cfg.Timeout = 30 // vaikeseadistus
}
// ...
}
// Kutsed:
doSomething(Config{})
- Abifunktsioonide (konstruktorite) loomine erinevate parameetrite komplektidega.
Nii rakendub Go keeles vaikeseadete väärtused funktsiooni sees olevate selgete loogikate või struktuuride kaudu, mitte keele süntaksi kaudu.