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

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

WBOY
Libérer: 2024-02-05 23:57:11
avant
447 Les gens l'ont consulté

为什么 `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
Copier après la connexion

Cas 2 :

str, err := m.something(); 

fmt.println(str)  //str is ok
Copier après la connexion

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
    }
Copier après la connexion


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
// ...
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal