Avatar ·

Wie implementiert man optionale Funktionsparameter in Go? Analog zur Überladung aus anderen Sprachen

Hallo Kollegen! Ich wechsle von Python und Java zu Go und bin auf ein Problem gestoßen. In diesen Sprachen bin ich an Funktionsüberladung und optionale Argumente gewöhnt, bei denen man Standardwerte festlegen kann. Zum Beispiel würde ich in Python schreiben: ```python def create_user(name, age=None, city="Moscow"): ... ``` In Go kann ich jedoch keinen Parameter einfach weglassen oder zwei Funktionen mit demselben Namen schreiben. Ich muss eine Funktion zum Registrieren eines Benutzers erstellen, bei der nur `name` erforderlich ist und `age` und `city` optional sind. Ich habe diesen Code ausprobiert, aber der Compiler meckert: ```go func CreateUser(name string, age int, city string) { // wenn age nicht übergeben wird, möchte ich 0 // wenn city nicht übergeben wird, möchte ich "Moscow" } func CreateUser(name string) { // Fehler: CreateUser redeclared CreateUser(name, 0, "Moscow") } ``` Ich habe die Dokumentation gelesen - in Go gibt es keine Funktionsüberladung. Ich habe Varianten mit Zeigern gesehen, aber dann wird der aufrufende Code umständlich: `CreateUser("Alex", nil, nil)`. Gibt es eine bessere