Heim  >  Artikel  >  Backend-Entwicklung  >  Warum ändert „if“ den Gültigkeitsbereich dieser Variablen?

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

WBOY
WBOYnach vorne
2024-02-05 23:57:11396Durchsuche

为什么 `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

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
    }

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
// ...

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen