Warum ändert „if' den Gültigkeitsbereich dieser Variablen?

WBOY
Freigeben: 2024-02-05 23:57:11
nach vorne
438 Leute haben es durchsucht

为什么 `if` 改变了这个变量的范围

Frageninhalt

Wenn ich so etwas hätte

Fall 1:

if str, err := m.something(); err != nil {
        return err
    }

fmt.println(str)  //str is undefined variable
Nach dem Login kopieren

Fall 2:

str, err := m.something(); 

fmt.println(str)  //str is ok
Nach dem Login kopieren

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
    }
Nach dem Login kopieren


Die richtige Antwort


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 语句(以及 forswitch)是隐式块,根据语言规范,:= 用于声明和赋值。如果您希望 strif 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
// ...
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage