Heim >Backend-Entwicklung >Golang >Wie gehe ich mit dem Variablenbereich in den bedingten Anweisungen von Go richtig um?

Wie gehe ich mit dem Variablenbereich in den bedingten Anweisungen von Go richtig um?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-28 18:56:11497Durchsuche

How to Properly Handle Variable Scope in Go's Conditional Statements?

Einschränkungen des Variablenbereichs in Go: Lösung des Problems von Variablen in If-Anweisungen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn