Aller au contenu

Structures de contrôle (if, for, switch, defer)#

Condition if-else#

  • En Go, la syntaxe de base pour une instruction if est : if condition { // instructions } else { // instructions }. Notons que contrairement à d'autres langages, il n'y a pas de parenthèses entourant la condition en Go.
  • La condition dans l'instruction if doit être un booléen. Go est strictement typé et ne convertira pas automatiquement d'autres types en booléens.
  • Go permet l'utilisation d'une instruction de pré-condition où une variable peut être définie dont la portée est limitée à la condition du bloc if. Exemple : if x := computeSomething(); x < 10 { // instructions }.
  • Les informations détaillées peuvent être trouvées dans la documentation officielle du langage Go : https://golang.org/doc/effective_go#if

Exemple de code :

if x := 10; x%2 == 0 {
    fmt.Println(x, "is even")
} else {
    fmt.Println(x, "is odd")
}

Boucles for et variations (for-range)#

  • En Go, for est l'unique mot clé pour les boucles, qui peut être utilisé de plusieurs manières : for init; condition; post { // instructions }, for condition { // instructions }, for { // instructions } pour une boucle sans fin.
  • Une autre variation du for est le for range, utilisé pour itérer sur des éléments dans une variété de structures de données comme les slices, arrays, strings, maps, ou channels.
  • Pour plus de détails sur l'utilisation des boucles for en Go, vous pouvez consulter la documentation officielle : https://golang.org/doc/effective_go#control-structures

Exemple de code :

for i := 0; i < 5; i++ {
    fmt.Println(i)
}

nums := []int{2, 3, 4}
for i, num := range nums {
    fmt.Println("index:", i, "value:", num)
}

Instruction switch-case#

  • En Go, l'instruction switch permet d'exécuter une branche de code parmi plusieurs possibles, basée sur l'évaluation d'une expression.
  • Contrairement à d'autres langages, il n'est pas nécessaire d'utiliser break à la fin de chaque case en Go. Le contrôle de programme sort du switch dès qu'un case correspond.
  • Les case en Go peuvent avoir plusieurs valeurs séparées par des virgules et peuvent également avoir des conditions, pas seulement des valeurs.
  • Pour plus de détails sur l'utilisation de switch en Go, consultez la documentation officielle : https://golang.org/doc/effective_go#switch

Exemple de code :

switch day := 5; day {
case 1, 2, 3, 4, 5:
    fmt.Println("Weekday")
default:
    fmt.Println("Weekend")
}

Utilisation de defer#

  • En Go, defer est utilisé pour s'assurer qu'une fonction est appelée plus tard dans le programme, généralement à des fins de nettoyage. defer est souvent utilisé pour simplifier les fonctions qui effectuent diverses opérations de nettoyage.
  • Les appels de fon

ctions différés sont exécutés dans le style LIFO (Last In First Out). * Pour plus d'informations sur l'utilisation de defer en Go, consultez la documentation officielle : https://golang.org/doc/effective_go#defer

Exemple de code :

func readFile(filename string) {
    file, err := os.Open(filename)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    // read the file
}