Maison  >  Article  >  développement back-end  >  Pourquoi « if » change-t-il la portée de cette variable ?

Pourquoi « if » change-t-il la portée de cette variable ?

WBOY
WBOYavant
2024-02-05 23:57:11398parcourir

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

Contenu des questions

Si j'avais quelque chose comme ça

Cas 1 :

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

fmt.println(str)  //str is undefined variable

Cas 2 :

str, err := m.something(); 

fmt.println(str)  //str is ok

Ma question est de savoir pourquoi la portée d'une variable str change lorsqu'elle est utilisée dans ce format

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

La bonne réponse


car l'instruction if (ainsi que for et switch) est Bloc implicite, selon la spécification du langage, := est utilisé pour la déclaration et l'affectation. Si vous souhaitez que if 语句(以及 forswitch)是隐式块,根据语言规范,:= 用于声明和赋值。如果您希望 strif soit disponible après if, vous pouvez d'abord déclarer la variable puis lui attribuer une valeur dans l'instruction if :

var s string
var err error

if str, err = m.something(); err != nil
// ...

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer