Conditions de test avec les expressions if/else

Effectué

Le flux de contrôle le plus basique dans n’importe quel langage de programmation est l’instruction if/else. Dans Go, les instructions if/else sont simples. Mais vous devez comprendre quelques différences avant de commencer à écrire des programmes Go.

Jetons un coup d’œil à la syntaxe Go pour les instructions if.

Syntaxe pour les instructions If

Contrairement à d’autres langages de programmation, dans Go, vous n’avez pas besoin de parenthèses dans les conditions. La clause else est facultative. Toutefois, les accolades sont toujours obligatoires. En outre, Go n’offre pas de prise en charge des instructions if ternaires pour réduire les lignes, vous devez donc écrire l’instruction if complète à chaque fois.

Voici un exemple de base d’une instruction if :

package main

import "fmt"

func main() {
    x := 27
    if x%2 == 0 {
        fmt.Println(x, "is even")
    }
}

Dans Visual Studio Code, si votre syntaxe Go contient des parenthèses dans les conditions, les parenthèses sont automatiquement supprimées lorsque vous enregistrez votre programme.

Instructions if composées

Go prend en charge les instructions if composées. Vous pouvez imbriquer des instructions à l’aide de l’instruction else if. Voici un exemple :

package main

import "fmt"

func givemeanumber() int {
    return -1
}

func main() {
    if num := givemeanumber(); num < 0 {
        fmt.Println(num, "is negative")
    } else if num < 10 {
        fmt.Println(num, "has only one digit")
    } else {
        fmt.Println(num, "has multiple digits")
    }
}

Dans ce code, notez que la variable num stocke la valeur retournée par la fonction givemeanumber() et la variable est disponible dans toutes les ifbranches. Toutefois, si vous essayez d’imprimer la valeur de la variable num en dehors du bloc if, vous obtenez une erreur :

package main

import "fmt"

func somenumber() int {
    return -7
}
func main() {
    if num := somenumber(); num < 0 {
        fmt.Println(num, "is negative")
    } else if num < 10 {
        fmt.Println(num, "has 1 digit")
    } else {
        fmt.Println(num, "has multiple digits")
    }

    fmt.Println(num)
}

Lorsque vous exécutez le programme, la sortie d’erreur se présente comme suit :

# command-line-arguments
./main.go:17:14: undefined: num

Dans Go, la déclaration de variables dans if blocs est idiomatique. Il s’agit d’un moyen de programmer efficacement à l’aide d’une convention qui est courante dans Go.