Zum Hauptinhalt springen
Veröffentlicht am

Argumente in Go

Teilen:

Einführung

Argumente sind die Bausteine von Funktionen und ermöglichen die Übergabe von Werten oder Referenzen zwischen Funktionen, Methoden und sogar Packages in Go. Sie sind unerlässlich für die Modularisierung von Code und die Erstellung wiederverwendbarer, effizienter Anwendungen.

Übergabe per Wert vs. Übergabe per Referenz

In Programmiersprachen kann die Art und Weise, wie Daten an Funktionen übergeben werden, variieren. In Go ist das nicht anders.

Übergabe per Wert

Wenn du ein Argument per Wert übergibst, gibst du der Funktion effektiv eine Kopie des ursprünglichen Wertes. Diese Kopie wird an einem neuen Speicherort gespeichert.

func wertAendern(x int) {
  x = 10
}

func main() {
  y := 5
  wertAendern(y)
  fmt.Println(y)  // Gibt 5 aus, weil eine Kopie von y geändert wurde, nicht y selbst
}

Übergabe per Referenz

Im Gegensatz dazu gibst du bei der Übergabe per Referenz der Funktion einen Zeiger auf den Speicherort, an dem der ursprüngliche Wert gespeichert ist, und ermöglichst der Funktion so, diesen Wert direkt zu ändern.

func referenzAendern(x *int) {
  *x = 10
}

func main() {
  y := 5
  referenzAendern(&y)
  fmt.Println(y)  // Gibt 10 aus, weil die Funktion den ursprünglichen Wert von y geändert hat
}

Variadische Argumente: Flexibilität in Funktionen

Go unterstützt variadische Argumente, was bedeutet, dass du eine unbegrenzte Anzahl von Werten an eine Funktion übergeben kannst. Diese sind besonders nützlich, wenn du nicht weißt, wie viele Argumente benötigt werden könnten.

func namenAusgeben(namen ...string) {
  for _, name := range namen {
    fmt.Println(name)
  }
}

func main() {
  namenAusgeben("Ana", "Johann", "Michael")
}

Structs als „Benannte Argumente"

In einigen Sprachen ist es möglich, Argumente per Name zu übergeben. Go verfügt nicht nativ über diese Funktionalität, aber du kannst benannte Argumente mithilfe von Structs simulieren. Das ist nützlich, um den Code lesbarer und selbsterklärend zu machen.

type Config struct {
  Name  string
  Alter int
}

func benutzerKonfigurieren(config Config) {
  fmt.Printf("Name: %s, Alter: %d\n", config.Name, config.Alter)
}

Warum sind Argumente in Go so Wichtig?

Argumente sind das Rückgrat von Funktionen in Go. Sie ermöglichen Modularität, Wiederverwendbarkeit und Skalierbarkeit. Wenn man genau versteht, wie Argumente funktionieren, kann man effizienteren Code schreiben und gängige Fehler und Fallstricke vermeiden.

Fazit

Die effektive Handhabung von Argumenten ist entscheidend für die Entwicklung in Go. Ob per Wert, per Referenz, mit variadischen Argumenten oder durch die Simulation benannter Argumente mit Structs — die Fähigkeit, Argumente zu manipulieren und zu verstehen, ist eine unverzichtbare Kompetenz für alle Go-Entwickler.

Happy coding!