Junior — Middle
Jak jest zaimplementowany przesyłanie wartości domyślnych w parametrach funkcji w języku Go?
sobes.tech AI
Odpowiedź od AI
W języku Go nie ma wbudowanego wsparcia dla parametrów funkcji z wartościami domyślnymi, jak w niektórych innych językach (np. Python czy C++). Aby zaimplementować podobne zachowanie, zwykle stosuje się jedno z następujących podejść:
- Przeciążanie funkcji za pomocą parametrów zmiennych — przekazywanie do funkcji zmiennej liczby argumentów i sprawdzanie ich obecności wewnątrz:
func greet(name string, messages ...string) {
msg := "Hello"
if len(messages) > 0 {
msg = messages[0]
}
fmt.Println(msg, name)
}
// Wywołania:
greet("Alice") // Hello Alice
greet("Bob", "Hi") // Hi Bob
- Użycie struktur z ustawieniami — przekazywanie do funkcji struktury z parametrami, gdzie można ustawić wartości domyślne podczas tworzenia:
type Config struct {
Timeout int
}
func doSomething(cfg Config) {
if cfg.Timeout == 0 {
cfg.Timeout = 30 // wartość domyślna
}
// ...
}
// Wywołanie:
doSomething(Config{})
- Tworzenie funkcji pomocniczych-konstruktorów z różnymi zestawami parametrów.
W ten sposób, w Go, wartości domyślne są realizowane przez jawą logikę wewnątrz funkcji lub przez struktury, a nie przez składnię języka.