Heim >Backend-Entwicklung >Golang >Wie gehe ich mit dem Variablenbereich in den bedingten Anweisungen von Go richtig um?
In Go ist der Variablenbereich auf den Codeblock beschränkt, in dem sie deklariert sind. Dies kann eine Herausforderung darstellen, wenn mit Variablen gearbeitet wird, die vom Ergebnis einer if-Anweisung abhängen. Betrachten Sie die folgende Situation:
Problem:
Das Erstellen einer Variablen innerhalb einer if-Anweisung und deren anschließende Verwendung ist eingeschränkt, da der Gültigkeitsbereich der Variablen auf den if-Block beschränkt ist.
Beispielcode:
if len(array1) > len(array2) { new1 := make([]string, 0, len(array1)) // Code using new1 } new2 := make([]string, 0, len(new1)) // Error: new1 out of scope copy(new2, new1)
Vorgeschlagen Lösung:
Eine sinnlose Variable verwenden, um das Ergebnis der if-Anweisung zu speichern und dann diesen Wert verwenden, um die gewünschte Variable zu deklarieren.
var pointlessvariable uint if len(array1) > len(array2) { pointlessvariable = len(array1) } else { pointlessvariable = len(array2) } var new1 = make([]string, 0, pointlessvariable) if len(array1) > len(array2) { // Code using new1 } new2 := make([]string, 0, len(new1)) copy(new2, new1)
Bessere Lösung:
Deklarieren Sie die Variable außerhalb des if-Blocks und verwenden Sie zum Initialisieren die make-Funktion innerhalb der if-Anweisung it.
var new1 []string if len(array1) > len(array2) { new1 = make([]string, 0, len(array1)) // Code using new1 } else { new1 = make([]string, 0, len(array2)) // Other code using new1 } new2 := make([]string, 0, len(new1)) copy(new2, new1)
Dieser letztere Ansatz bietet eine saubere und elegante Lösung, ohne auf verwirrende oder unnötige Variablen zurückzugreifen.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit dem Variablenbereich in den bedingten Anweisungen von Go richtig um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!