Typdeklaration durch Inferenz
Da Go den Typ einer Variable anhand ihres Anfangswerts bestimmen kann, können wir den Prozess der Typdeklaration vereinfachen, indem wir den Schritt des expliziten Angebens des Typs weglassen?
package main
import "fmt"
func main() {
// var a int = 1
var a = 1 // Type is inferred
fmt.Println(a)
}
Jetzt müssen Sie sogar nicht einmal das Schlüsselwort var
verwenden, um eine Variable zu definieren.
Diese Art der Deklaration und Initialisierung einer Variable kann auch mit der Batch-Deklarationsmethode kombiniert werden:
a, b, c := 0
// Declare variables a, b, c as integers and assign an initial value of 0
a, b, c := 0, "", true
// Declare variables a, b, c as integer, string, and boolean, respectively
Die Kurzdeklaration ist sehr praktisch, aber beachten Sie, dass :=
keine Zuweisungsoperation ist. Es ist eine Art, Variablen zu deklarieren, und ist einzigartig für Go. Es wird verwendet, um lokale Variablen innerhalb einer Funktion zu deklarieren und zu initialisieren. Der Typ der Variable wird automatisch anhand des Ausdrucks abgeleitet.
Manchmal schreiben wir folgenden Code:
func main() {
a := 1
println(a)
a := 2
println(a)
}
Der Compiler wird Ihnen sagen, dass es einen Fehler im Code gibt, weil die Variable a
erneut deklariert wurde. Wenn er jedoch wie folgt geschrieben wird:
func main() {
a := 1
if true {
a := 2
println(a) // Output: 2
}
println(a) // Output: 1
}
Es gibt eine solche Ausgabe, weil die a
mit dem Wert 1
oben und die a
mit dem Wert 2
unten nicht im gleichen Variablenbereich (innerhalb der gleichen geschweiften Klammern) liegen. Daher behandelt der Compiler sie als zwei verschiedene Variablen.
Der Compiler wird Ihren Fehler nicht aufzeigen, aber es wird eine unerwartete Ausgabe geben.
In Go ist festgelegt:
Jede Anweisung außerhalb einer Funktion muss mit einem Schlüsselwort (var
, func
usw.) beginnen.
Daher kann die Kurzvariablendeklaration nur zur Deklaration von lokalen Variablen verwendet werden und nicht zur Deklaration von globalen Variablen.
Was ist also eine globale Variable und was ist eine lokale Variable?
Dies betrifft das Konzept der Variablenlebensdauer, das im nächsten Abschnitt erklärt wird.