Wenn Sie einen bestimmten Typ verwenden möchten, x := uint32(123)funktioniert dies beispielsweise. Es muss für die meisten Leute offensichtlich sein, aber ich musste ein paar Minuten nachdenken ;-)
Bedeutet das also Variable mit abgeleitetem Typ? richtig?
Krupal Shah
@KrupalShah der Link zu den Dokumenten sagt wörtlich: "Es ist eine Abkürzung für eine reguläre Variablendeklaration mit Initialisiererausdrücken, aber ohne Typen:" golang.org/ref/spec#Short_variable_declarations
akshaynagpal
1
Sieht so aus, :=als wäre er hier als Operator aufgeführt: golang.org/ref/spec#Operators_and_punctuation , daher bin ich mir nicht sicher, ob ich damit einverstanden bin, dass " :=eigentlich kein Operator ist"
Powers
347
In Go :=ist für Deklaration + Zuweisung, während =nur für Zuweisung.
Zum Beispiel var foo int = 10 ist das gleiche wie foo := 10.
Gibt es einen Anwendungsfall für =im Gegensatz zu :=? Solltest du einfach immer benutzen :=?
Kenny Worden
3
Mit @KennethWorden Go können Sie nicht :=einer bereits deklarierten Variablen zuweisen, es sei denn, Sie weisen mehrere Variablen gleichzeitig zu, und mindestens eine dieser Variablen ist neu.
Kenny Bania
5
das intist nicht erforderlich, var foo = 10ist das gleiche wiefoo := 10
Gary Lyn
@ KennyWorden, ja. Sie können nicht verwenden: = außerhalb einer Funktion.
Karuhanga
105
Wie andere bereits erklärt haben, :=gilt dies sowohl für die Erklärung als auch für die Abtretung und auch für die erneute Erklärung; und es errät ( schließt ) automatisch den Typ der Variablen.
Zum Beispiel foo := 32ist eine Kurzform von:
var foo int
foo =32// OR:var foo int=32// OR:var foo =32
/ * Es gibt einige Regeln: * /
★ 1. Regel:
Sie können nicht :=aus verwenden funcs. Dies liegt daran, dass eine Anweisung aus irgendeinem Grund mit einem Schlüsselwort beginnen sollte.
// no keywords below, illegal.
illegal :=42// `var` keyword makes this statement legal.var legal =42
func foo(){
alsoLegal :=42// reason: it's in a func scope.}
★ 2. Regel:
Sie können sie nicht zweimal verwenden ( im selben Bereich ):
legal :=42
legal :=42// <-- error
Denn :=einleitet „eine neue Variable“ , indem es daher nicht zweimal eine zweite Variable ist neu deklarieren, so dass es illegal ist.
★ 3. Regel:
Sie können sie für Deklarationen und Zuweisungen mit mehreren Variablen verwenden:
foo, bar :=42,314
jazz, bazz :=22,7
★ 4. Regel (Neuerklärung):
Sie können sie zweimal in Deklarationen mit mehreren Variablen verwenden , wenn eine der Variablen neu ist :
foo, bar := someFunc()
foo, jazz := someFunc()// <-- jazz is new
baz, foo := someFunc()// <-- baz is new
Dies ist legal, da Sie nicht alle Variablen deklarieren, sondern lediglich den vorhandenen Variablen neue Werte zuweisen und gleichzeitig neue Variablen deklarieren. Dies wird als Neuerklärung bezeichnet .
★ 5. Regel:
Mit der kurzen Deklaration können Sie eine Variable in einem neueren Bereich deklarieren, auch wenn diese Variable bereits zuvor mit demselben Namen deklariert wurde:
var foo int=34
func some(){// because foo here is scoped to some func
foo :=42// <-- legal
foo =314// <-- legal}
Hier foo := 42ist legal, denn es erklärt fooin some()func Anwendungsbereich. foo = 314ist legal, weil es nur einen neuen Wert zuweist foo.
★ 6. Regel:
Sie können denselben Namen in kurzen Anweisungsblöcken deklarieren wie: if , for , switch :
foo :=42if foo := someFunc(); foo ==314{// foo is scoped to 314 here// ...}// foo is still 42 here
Weil fooin if foo := ...nur zu dieser ifKlausel gehört und sich in einem anderen Bereich befindet.
Grundsätzlich gilt: Wenn Sie eine Variable einfach deklarieren möchten, können Sie sie verwenden :=, oder wenn Sie nur eine vorhandene Variable überschreiben möchten, können Sie sie verwenden =.
«= Ist Zuweisungsoperator. Es wird genauso verwendet, wie Sie es in jeder anderen Sprache verwenden würden. » Außer in Ada, wo =nur zum Vergleich und :=zur Aufgabe ist ...
Alexis Wilke
13
Das: = bedeutet deklarieren und zuweisen, während das = bedeutet, einfach zuzuweisen.
x := uint32(123)
funktioniert dies beispielsweise. Es muss für die meisten Leute offensichtlich sein, aber ich musste ein paar Minuten nachdenken ;-)Antworten:
Nur
=
der Zuweisungsoperator.:=
ist Teil der Syntax der Short-Variablendeklarationsklausel .👉 Es gibt jedoch einige Regeln. Weitere Informationen finden Sie in dieser anderen Antwort .
quelle
:=
als wäre er hier als Operator aufgeführt: golang.org/ref/spec#Operators_and_punctuation , daher bin ich mir nicht sicher, ob ich damit einverstanden bin, dass ":=
eigentlich kein Operator ist"In Go
:=
ist für Deklaration + Zuweisung, während=
nur für Zuweisung.Zum Beispiel
var foo int = 10
ist das gleiche wiefoo := 10
.quelle
=
im Gegensatz zu:=
? Solltest du einfach immer benutzen:=
?:=
einer bereits deklarierten Variablen zuweisen, es sei denn, Sie weisen mehrere Variablen gleichzeitig zu, und mindestens eine dieser Variablen ist neu.int
ist nicht erforderlich,var foo = 10
ist das gleiche wiefoo := 10
Wie andere bereits erklärt haben,
:=
gilt dies sowohl für die Erklärung als auch für die Abtretung und auch für die erneute Erklärung; und es errät ( schließt ) automatisch den Typ der Variablen.Zum Beispiel
foo := 32
ist eine Kurzform von:/ * Es gibt einige Regeln: * /
★ 1. Regel:
Sie können nicht
:=
aus verwendenfuncs
. Dies liegt daran, dass eine Anweisung aus irgendeinem Grund mit einem Schlüsselwort beginnen sollte.★ 2. Regel:
Sie können sie nicht zweimal verwenden ( im selben Bereich ):
Denn
:=
einleitet „eine neue Variable“ , indem es daher nicht zweimal eine zweite Variable ist neu deklarieren, so dass es illegal ist.★ 3. Regel:
Sie können sie für Deklarationen und Zuweisungen mit mehreren Variablen verwenden:
★ 4. Regel (Neuerklärung):
Sie können sie zweimal in Deklarationen mit mehreren Variablen verwenden , wenn eine der Variablen neu ist :
Dies ist legal, da Sie nicht alle Variablen deklarieren, sondern lediglich den vorhandenen Variablen neue Werte zuweisen und gleichzeitig neue Variablen deklarieren. Dies wird als Neuerklärung bezeichnet .
★ 5. Regel:
Mit der kurzen Deklaration können Sie eine Variable in einem neueren Bereich deklarieren, auch wenn diese Variable bereits zuvor mit demselben Namen deklariert wurde:
Hier
foo := 42
ist legal, denn es erklärtfoo
insome()
func Anwendungsbereich.foo = 314
ist legal, weil es nur einen neuen Wert zuweistfoo
.★ 6. Regel:
Sie können denselben Namen in kurzen Anweisungsblöcken deklarieren wie: if , for , switch :
Weil
foo
inif foo := ...
nur zu dieserif
Klausel gehört und sich in einem anderen Bereich befindet.Verweise:
Kurze Regeln für die Deklaration von Variablen
Ein visueller Leitfaden für Go-Variablen
quelle
:=
ist eine Abkürzung für die Erklärung.a
wird als deklariertint
und mit value initialisiert,10
wobei asb
als String deklariert und mit value initialisiert wirdgopher
.Ihre Entsprechungen
=
wären=
ist Zuweisungsoperator. Es wird genauso verwendet, wie Sie es in jeder anderen Sprache verwenden würden.Sie können den Typ weglassen, wenn Sie die Variable deklarieren und ein Initialisierer vorhanden ist ( http://tour.golang.org/#11 ).
quelle
=
nur zum Vergleich und:=
zur Aufgabe ist ...Das: = bedeutet deklarieren und zuweisen, während das = bedeutet, einfach zuzuweisen.
quelle
:=
deklariert und weist zu,=
weist nur zuDies ist nützlich, wenn Sie Ihren Code nicht mit Typ- oder Strukturdeklarationen füllen möchten.
quelle
aus dem Referenzdokument: ( tour.golang.org )
Innerhalb einer Funktion kann die
:=
kurze Zuweisungsanweisung anstelle einer var-Deklaration mit implizitem Typ verwendet werden.Außerhalb einer Funktion beginnt jedes Konstrukt mit einem Schlüsselwort (var, func usw.) und das Konstrukt: = ist nicht verfügbar.
quelle
": =" Wird verwendet, um Deklaration und Initilisierung gleichzeitig durchzuführen. Das folgende Beispiel zeigt dies.
Verwendung von "="
var i int
i = 10
https://play.golang.org/p/RU88ty_SGa
Verwendung von ": ="
i: = 10
https://play.golang.org/p/XBdjBh-DQB
quelle
Beides ist die unterschiedliche Technik der Variablendeklaration in der Go-Sprache.
UND
Eine kurze Variablendeklaration ist eine Abkürzung für eine reguläre Variablendeklaration mit Initialisiererausdrücken, aber ohne Typen.
Lesen Sie unten für Details:
Variablendeklarationen
Kurze Variablendeklarationen
quelle