Avatar ·

So übergeben Sie einen Standardwert an eine Go-Methode, wenn die Sprache keine Funktionsüberladung hat

Hallo zusammen! Ich habe gerade angefangen, Go nach Python zu lernen, und bin auf ein unerwartetes Problem gestoßen. In Python war ich es gewohnt, Funktionen mit Standardargumenten zu schreiben, zum Beispiel: ```python def greet(name, greeting="Hello"): print(f"{greeting}, {name}!") ``` Wenn man `greet("Alice")` aufruft, wird greeting automatisch zu "Hello". Falls nötig, kann man seinen eigenen Wert übergeben: `greet("Alice", "Hi")`. Jetzt schreibe ich in Go und möchte eine ähnliche Methode erstellen. Angenommen, ich habe eine Struct `Config` und eine Methode `NewClient`, die eine Serveradresse und ein Timeout entgegennimmt. Ich möchte, dass das Timeout standardmäßig 30 Sekunden beträgt, der Benutzer aber manchmal seinen eigenen Wert festlegen kann. In Go habe ich es so versucht: ```go type Config struct { Address string Timeout int } func NewClient(address string, timeout int) *Config { if timeout == 0 { timeout = 30 // Standardwert } return &Config{Address: address, Timeout: timeout} } ``` Aber das funktioniert schlecht: Wenn der Benutzer explizit 0 übergibt, wird der Standardwert fälschlicherweise angewendet.