Programmation en Go/If et switch
Alternatives: if/else
modifierLa forme if/else permet de tester une condition, d'exécuter un bloc d'instructions si cette condition est vraie (le booléen 'true'), et un autre bloc si la condition est fausse.
if condition { condition vraie } else { condition fausse }
Par exemple, pour calculer une valeur absolue:
func Abs (x int) int { if x < 0 { return -x } return x }
Switch
modifierswitch { case condition: instructions case condition: instructions default: instructions }
On peut ainsi réaliser plusieurs alternatives. On peut également réaliser un "switch" sur une valeur donnée:
signe:="Bélier" switch signe { case "Bélier","Gémeaux": return "Vous allez être riche" case "Taureau","Sagittaire": return "Vous allez épouser une belle personne" default: return "Je ne sais pas trop" }
Détecter un type
modifierUne variable de type interface {} peut contenir une valeur de type quelconque. Il est possible de tester que le type de cette valeur est T en exécutant:
v, ok = valeur.(T)
Il est aussi possible de le faire avec switch:
var valeur interface {} switch t := valeur.(type) { default: fmt.Printf("type inattendu %T", t) case bool: fmt.Printf("booléen %T\n", t) case int: fmt.Printf("entier %T\n", t) case *bool: fmt.Printf("pointeur vers booléen %T\n", *t) case *int: fmt.Printf("pointeur vers entier %T\n", *t) }
Alternative avec initialisation
modifierif initialisation; condition { switch initialisation; condition {
Exemple:
if err := file.Chmod("0664"); err { //erreur dans chmod }