Avatar ·

Unterschied zwischen := und = in Go: Kurzdeklaration vs. Zuweisung

Hallo zusammen! Ich habe gerade angefangen, Go zu lernen, und bin bei den Operatoren := und = verwirrt. Beide scheinen für die Arbeit mit Variablen verwendet zu werden, aber worin besteht der Unterschied?\n\nHier ist ein Beispiel, das mich verwirrt hat:\n\n```go\npackage main\n\nimport "fmt"\n\nfunc main() {\n name := "Anna" // das funktioniert\n var age int = 25 // das funktioniert auch\n age = 30 // und das funktioniert auch\n // name = "Boris" // das habe ich auch versucht\n}\n```\n\nWenn ich name := "Anna" schreibe, ist alles in Ordnung. Aber wenn ich zuerst eine Variable mit var deklariere und dann versuche, := mit derselben Variable zu verwenden, beschwert sich der Compiler: "no new variables on left side of :=". Warum?\n\nAußerdem habe ich bemerkt, dass := nur innerhalb von Funktionen funktioniert. Wenn ich so schreibe:\n\n```go\nvar version = "1.0" // global — ok\n// version := "1.0" // global — Fehler!\n```