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.
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs
Arbeiten mit Datenbanken in Java: PostgreSQL und MongoDB für Anfänger
A/B-Testing in TypeScript: Wie man nicht im Kaffeesatz lesen muss
Das Ausrufezeichen in Swift: ! und ? — die geheime Bedeutung unter der Haube
Arbeit mit WebAssembly und Java: von A bis Z