Maison > développement back-end > Golang > Comment déclarer des variables dans des instructions conditionnelles en Go ?

Comment déclarer des variables dans des instructions conditionnelles en Go ?

Susan Sarandon
Libérer: 2024-11-09 15:37:02
original
528 Les gens l'ont consulté

How to Declare Variables in Conditional Statements in Go?

Portée des variables dans Go : déclaration de variables dans des instructions conditionnelles

Question :

Pendant l'apprentissage de Go, un développeur a eu du mal à déclarer des variables dans une instruction if...else, rencontrant des erreurs indiquant que les variables ont été déclarées mais non utilisées. Comment ce problème peut-il être résolu ?

Réponse :

Dans Go, la portée des variables est limitée au bloc dans lequel elles sont déclarées. Par conséquent, déclarer des variables dans des instructions conditionnelles ne les rend accessibles que dans ce bloc spécifique.

Pour comprendre ce concept, considérons l'exemple suivant :

package main

import "fmt"

func main() {
    a := 1
    fmt.Println(a) // 1
    {
        a := 2
        fmt.Println(a) // 2
    }
    fmt.Println(a) // 1
}
Copier après la connexion

Dans cet exemple, la variable a est déclarée deux fois : une fois à l’extérieur et une fois à l’intérieur d’un bloc. La première déclaration (a := 1) est valide pour l'ensemble de la fonction principale, tandis que la deuxième déclaration (a := 2) n'est valide que dans le bloc.

Ce comportement est analogue dans les instructions conditionnelles :

if strings.EqualFold(r.Method, "GET") || strings.EqualFold(r.Method, "") {
    req, er := http.NewRequest(r.Method, r.Uri, b)
} else {
    req, er := http.NewRequest(r.Method, r.Uri, b)
}

if er != nil {
    // Do something...
}
Copier après la connexion

Dans cet exemple, les variables req et er sont déclarées respectivement dans les branches if et else. Cependant, lorsque le programme sort de ces blocs, les variables ne sont plus accessibles.

Pour résoudre ce problème, déclarez les variables en dehors de l'instruction conditionnelle et utilisez l'opérateur d'affectation (=) pour modifier leurs valeurs :

var req *http.Request
var er error
if strings.EqualFold(r.Method, "GET") || strings.EqualFold(r.Method, "") {
    req, er = http.NewRequest(r.Method, r.Uri, b)
} else {
    req, er = http.NewRequest(r.Method, r.Uri, b)
}

if er != nil {
    // Do something...
}
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:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal