Wenn ich so etwas hätte
Fall 1:
if str, err := m.something(); err != nil { return err } fmt.println(str) //str is undefined variable
Fall 2:
str, err := m.something(); fmt.println(str) //str is ok
Meine Frage ist, warum sich der Gültigkeitsbereich einer Variablen str
ändert, wenn sie in diesem Format verwendet wird
if str, err := m.something(); err != nil { return err //str scope ends }
denn die if
-Anweisung (sowie for
und switch
) ist Impliziter Block, gemäß der Sprachspezifikation wird :=
zur Deklaration und Zuweisung verwendet. Wenn Sie möchten, dass if
语句(以及 for
和 switch
)是隐式块,根据语言规范,:=
用于声明和赋值。如果您希望 str
在 if
nach if
verfügbar ist, können Sie die Variable zuerst deklarieren und ihr dann in der if-Anweisung einen Wert zuweisen:
var s string var err error if str, err = m.something(); err != nil // ...
Das obige ist der detaillierte Inhalt vonWarum ändert „if' den Gültigkeitsbereich dieser Variablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!