webentwicklung-frage-antwort-db.com.de

Unterschied zwischen: = und = Operatoren in Go

Was ist der Unterschied zwischen dem =- und dem :=-Operator in Go? Sie scheinen beide für den Auftrag zu sein? Das mag offensichtlich sein, aber ich finde es in den Dokumenten nicht.

188
Chris

Nur = ist der Zuweisungsoperator.

:= ist eigentlich kein Operator überhaupt. Sie ist Teil der Syntax der Short-Variablendeklarationen .

150
zzzz

In Go ist := für Deklaration + Zuweisung, während = nur für Zuweisung gilt.

Beispielsweise ist var foo int = 10 dasselbe wie foo := 10.

192
Chaos

Wie bereits erläutert, ist := sowohl für die Deklaration als auch für die Zuweisung und auch für die Redeklaration gedacht. und erraten (inferieren) automatisch den Typ der Variablen.

Es ist eine Kurzform von:

var foo int
foo = 32

// OR:
var foo int = 32

// OR:
var foo = 32

Einige Regeln

Sie können := nicht aus funcs verwenden. Dies liegt daran, dass aus irgendeinem Grund eine Anweisung mit einem Schlüsselwort beginnen sollte.

illegal := 42

func foo() {
  legal := 42
}

Sie können sie nicht zweimal verwenden (im selben Geltungsbereich):

legal := 42
legal := 42 // <-- error

Da :="eine neue Variable" einführt, wird eine zweite Variable nicht zweimal deklariert, daher ist sie illegal.


Sie können sie jedoch zweimal in "multi-variable" Deklarationen 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. Sie müssen lediglich den vorhandenen Variablen neue Werte zuweisen und gleichzeitig neue Variablen deklarieren.


Sie können die Kurzdeklaration verwenden, um eine Variable in einem neueren Bereich zu deklarieren, selbst wenn diese Variable bereits 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 ist foo := 42 zulässig, da er foo im Funktionsumfang von some() func deklariert. foo = 314 ist legal, da foo nur ein neuer Wert zugewiesen wird.


Sie können sie für Deklarationen und Zuweisungen mit mehreren Variablen verwenden:

foo, bar   := 42, 314
jazz, bazz := 22, 7

Sie können denselben Namen in kurzen Anweisungsblöcken deklarieren wie: if, for, switch:

foo := 42
if foo := someFunc(); foo == 314 {
  // foo is scoped to 314 here
  // ...
}
// foo is still 42 here

Weil foo in if foo := ... nur zu dieser if-Klausel gehört und sich in einem anderen Bereich befindet. 


Als allgemeine Regel: Wenn Sie eine Variable einfach deklarieren möchten, können Sie := verwenden. Wenn Sie einen vorhandenen Wert überschreiben möchten, können Sie = verwenden.

41
Inanc Gumus

:= ist eine Abkürzung für die Deklaration.

a := 10
b := "Gopher"

a wird als int deklariert und mit dem Wert 10 initialisiert, wobei b als String deklariert und mit dem Wert Gopher initialisiert wird.

Ihre Entsprechungen mit = wären

var a = 10
var b = "Gopher"

= ist Zuweisungsoperator. Es wird genauso verwendet wie in anderen Sprachen.

Sie können den Typ weglassen, wenn Sie die Variable deklarieren und ein Initialisierer vorhanden ist ( http://tour.golang.org/#11 ).

18
ShuklaSannidhya

:= deklariert und weist zu, = weist einfach zu

Dies ist nützlich, wenn Sie Ihren Code nicht mit Typ- oder Strukturdeklarationen füllen möchten.

// Usage with =
var i int
var U, V, W float64
var k = 0
var x, y float32 = -1, -2

// Usage with :=
i, j := 0, 10
f := func() int { return 7 }
ch := make(chan int)
9
Gustav

Das: = bedeutet deklarieren und zuweisen, während das = = einfach zuordnen soll.

9
Ralph Caraveo

aus dem Referenzdokument: ( tour.golang.org

Innerhalb einer Funktion kann die :=-Kurzzuweisungsanweisung 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.

6

“: =” Wird verwendet, um gleichzeitig Deklaration und Initialisierung durchzuführen. Das folgende Beispiel ist ein Beispiel.

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

2
Nisal Edu

Beides ist die unterschiedliche Technik der Variablendeklaration in der Go-Sprache. 

var firstName := "John" // is a variable declaration 

UND 

firstName := "John"   // is a short variable declaration. 

Eine kurze Variablendeklaration ist eine Abkürzung für eine reguläre Variablendeklaration mit Initialisierungsausdrücken, jedoch ohne Typen.

Lesen Sie unten für Details:

Variablendeklarationen

Kurze Variablendeklarationen

1
Pravin Mishra

Wie schon gesagt - Das: = bedeutet deklarieren und zuordnen; das = bedeutet einfach zuweisen. Wichtiger Hinweis hier ist, wenn Sie in Funktion sind

foo := 2.5

dann entscheidet Go, ob foo float32 oder float64 basierend auf mehreren Dingen ist. Wenn Sie jedoch als float64 entschieden und kompiliert wurden, können Sie foo nicht als float32 und umgekehrt verwenden. Daher ist es manchmal besser, die vollständige Syntax zu verwenden.

0
Belial