Junior — Middle
Jak je implementována předávání výchozích hodnot v parametrech funkcí v jazyce Go?
sobes.tech AI
Odpověď od AI
V jazyce Go není vestavěná podpora parametrů funkcí s výchozími hodnotami, jako je tomu v některých jiných jazycích (například Python nebo C++). Pro implementaci podobného chování se obvykle používá jeden z následujících přístupů:
- Přetížení funkcí pomocí proměnných parametrů — předat funkci proměnný počet argumentů a uvnitř je zkontrolovat:
func greet(name string, messages ...string) {
msg := "Hello"
if len(messages) > 0 {
msg = messages[0]
}
fmt.Println(msg, name)
}
// Volání:
greet("Alice") // Hello Alice
greet("Bob", "Hi") // Hi Bob
- Použití struktur s nastaveními — předat funkci strukturu s parametry, kde lze při vytváření nastavit výchozí hodnoty:
type Config struct {
Timeout int
}
func doSomething(cfg Config) {
if cfg.Timeout == 0 {
cfg.Timeout = 30 // výchozí hodnota
}
// ...
}
// Volání:
doSomething(Config{})
- Vytvoření pomocných funkcí-konstruktorů s různými sadami parametrů.
Tímto způsobem jsou ve Go výchozí hodnoty implementovány pomocí explicitní logiky uvnitř funkce nebo přes struktury, nikoli přes syntax jazyka.