it-swarm.com.de

Zuweisungsoperator in der Sprache Go

In letzter Zeit spielte ich mit Googles neuer Programmiersprache Go

und fragte mich, warum der Zuweisungsoperator := einen Doppelpunkt vor dem Gleichheitszeichen = hat. Gibt es einen bestimmten Grund, warum die Autoren der Sprache name := "John" anstelle von name = "John" verwenden wollten? ] _

75
Nenad

Das := Notation dient sowohl als Deklaration als auch als Initialisierung.

foo := "bar"

ist äquivalent zu

var foo = "bar"

Warum nicht nur foo = "bar" Wie in jeder Skriptsprache, fragen Sie vielleicht? Das ist gut, um Tippfehler zu vermeiden.

foo = "bar"
fooo = "baz" + foo + "baz"   // Oops, is fooo a new variable or did I mean 'foo' ?
111
Fabien
name := "John"

ist nur syntaktischer Zucker für

var name string
name = "John"

Go ist statisch geschrieben, daher müssen Sie Variablen deklarieren.

33
Joonazan

:= ist nicht der Zuweisungsoperator. Es ist eine kurze Variablendeklaration. = ist der Zuweisungsoperator.

Kurze Variablendeklarationen

Eine kurze Variablendeklaration verwendet die folgende Syntax:

ShortVarDecl = IdentifierList ":=" ExpressionList .

Es ist eine Abkürzung für eine reguläre Variablendeklaration mit Initialisierungsausdrücken, aber ohne Typen:

"var" IdentifierList = ExpressionList .

Zuweisungen

Assignment = ExpressionList assign_op ExpressionList .

assign_op = [ add_op | mul_op ] "=" .

In Go, name := "John" steht für var name = "John".

18
peterSO

Rob Pike erklärt warum Go während seines Vortrags "Origins of Go" (2010) := Hat.

:= War ein Pseudooperator in einer anderen von Pike codierten Sprache namens Newsquek (1989). Welche hatte Pascal-ish Notation und die Fähigkeit, Typ für deklarieren und initialisieren Idiom abzuleiten ( Seite 15 )

// variable: [type] = value
x: int = 1
x := 1

Randbemerkung: Robert Griesemer bringt:= - Operator, der die Frage beantwortet: "Was wäre eine Sache, die Sie nehmen? raus von Go? " während der QA-Sitzung bei Google I/O 2013. Als praktisch, aber problematisch .

10
user2418306

Beides sind die unterschiedlichen Techniken der Variablendeklaration in der Sprache Go.

var name = "John" // is a variable declaration 

UND

name := "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

4
Pravin Mishra

Wichtiger Kontext für die Antwort:

:= ist ein Kurzoperator zum Initialisieren einer Variablen. In Go sind die folgenden Operationen äquivalent:

var myNumb String = "one"
myNumb := "one"

Antwort:

Die implizite Frage lautet nun: "Warum hat go die Kurzschreibweise entworfen := Ein ... Haben : Vor dem =? ". Der Grund ist, um häufige Tippfehler zu vermeiden. Wenn der Operator für die Kurzzuweisung nur =, dann könnten Sie die folgende Situation haben:

var myNumb String = "one"
myNumb = "two"

Wollte der Benutzer, der diesen Code erstellt hat, two erneut myNumb zuweisen, oder hat er myNumb falsch eingegeben, anstatt myNumbTwo richtig einzugeben? Indem Sie den Doppelpunkt in :=, der Programmierer müsste zwei Fehler begehen (den Doppelpunkt und das var vergessen), um einen Fehler zu haben, wodurch die Wahrscheinlichkeit verringert wird, dies zu tun drastisch.

2
Webeng

Es gibt mindestens einen feinen Unterschied zwischen

name := "John"

und

var name = "John"

Ersteres ist eine nicht deklarierte Anweisung, die außerhalb eines Funktionskörpers nicht zulässig ist, während letzteres eine gültige Anweisung auf Paketebene ist.

2
maria s