Go - Priorité des opérateurs

La priorité des opérateurs détermine le regroupement des termes dans une expression. Cela affecte la manière dont une expression est évaluée. Certains opérateurs ont une priorité plus élevée que d'autres; par exemple, l'opérateur de multiplication a une priorité plus élevée que l'opérateur d'addition.

Par exemple x = 7 + 3 * 2; ici, x est attribué à 13, et non à 20 car l'opérateur * a une priorité plus élevée que +, il est donc d'abord multiplié par 3 * 2, puis ajouté en 7.

Ici, les opérateurs avec la priorité la plus élevée apparaissent en haut du tableau, ceux avec la priorité la plus basse apparaissent en bas. Dans une expression, les opérateurs de priorité supérieure seront évalués en premier.

Catégorie Opérateur Associativité
Postfix () [] ->. ++ - - De gauche à droite
Unaire + -! ~ ++ - - (type) * & sizeof De droite à gauche
Multiplicatif * /% De gauche à droite
Additif + - De gauche à droite
Décalage << >> De gauche à droite
Relationnel <<=>> = De gauche à droite
Égalité ==! = De gauche à droite
ET au niveau du bit & De gauche à droite
XOR au niveau du bit ^ De gauche à droite
OU au niveau du bit | De gauche à droite
ET logique && De gauche à droite
OU logique || De gauche à droite
Affectation = + = - = * = / =% = >> = << = & = ^ = | = De droite à gauche
Virgule , De gauche à droite

Exemple

Essayez l'exemple suivant pour comprendre la priorité des opérateurs disponible dans le langage de programmation Go -

package main

import "fmt"

func main() {
   var a int = 20
   var b int = 10
   var c int = 15
   var d int = 5
   var e int;

   e = (a + b) * c / d;      // ( 30 * 15 ) / 5
   fmt.Printf("Value of (a + b) * c / d is : %d\n",  e );

   e = ((a + b) * c) / d;    // (30 * 15 ) / 5
   fmt.Printf("Value of ((a + b) * c) / d is  : %d\n" ,  e );

   e = (a + b) * (c / d);   // (30) * (15/5)
   fmt.Printf("Value of (a + b) * (c / d) is  : %d\n",  e );

   e = a + (b * c) / d;     //  20 + (150/5)
   fmt.Printf("Value of a + (b * c) / d is  : %d\n" ,  e );  
}

Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant -

Value of (a + b) * c / d is : 90
Value of ((a + b) * c) / d is  : 90
Value of (a + b) * (c / d) is  : 90
Value of a + (b * c) / d is  : 50