Portées Locales et Globales
À ce stade, il est essentiel d'approfondir le concept de portée afin de comprendre dans quelles zones des variables (ou constantes) spécifiques peuvent être accessibles ou non.
La portée d'une variable ou d'une constante définit les endroits où elle peut être utilisée.
Lorsqu'une variable ou une constante est déclarée en dehors de tout bloc de code, elle devient accessible dans l'ensemble du programme, ce qui lui confère une portée globale. Dans l'extrait de code suivant, la constante pi illustre cette portée globale :
index.go
12345678package main import "fmt" const pi float32 = 3.1415 func main() { fmt.Println(pi) }
À l'inverse, lorsqu'une variable ou une constante est déclarée à l'intérieur d'un bloc de code, elle reste accessible uniquement dans ce bloc de code spécifique ainsi que dans tout bloc de code imbriqué, le cas échéant.
L'illustration ci-dessous met en évidence les différences entre les portées globale et locale :
Le code suivant montre les zones où l'accès aux variables est autorisé et où des erreurs peuvent survenir :
index.go
12345678910111213141516171819202122232425262728package main import "fmt" func main() { var value_1 int = 1 // Condition 1 if(true) { var value_2 int = 2 // Condition 2 if (true) { var value_3 int = 3 fmt.Println("In Condition 2:", value_1) fmt.Println("In Condition 2:", value_2) fmt.Println("In Condition 2:", value_3) } fmt.Println("In Condition 1:", value_1) fmt.Println("In Condition 1:", value_2) fmt.Println("In Condition 1:", value_3) // Error here } fmt.Println("In Main:", value_1) fmt.Println("In Main:", value_2) // Error here fmt.Println("In Main:", value_3) // Error here }
La variable value_1 reste accessible dans tout le bloc de code main(), y compris dans les blocs de code imbriqués comme Condition 1 et Condition 2. Elle est également accessible dans Condition 1 et sa Condition 2 imbriquée.
Cependant, toute tentative d’y accéder directement en dehors du bloc main() entraînera une erreur. De même, la variable value_2, déclarée dans Condition 2, n’est accessible que dans ce bloc de code spécifique.
Il est essentiel de prendre en compte les portées dans le contexte des fonctions. Lorsqu’une variable ou une constante est déclarée à l’intérieur d’une fonction, elle reste confinée à cette fonction et n’est pas accessible dans d’autres fonctions, y compris main().
Remarque
main()fonctionne comme une fonction exécutée automatiquement lors de l’exécution du programme.
index.go
12345678func myFunc() { var number int = 7 fmt.Println(number) // Accessible here } func main() { fmt.Println(number) // Not accessible here }
Un autre point essentiel à retenir est qu’il n’est pas possible de déclarer deux variables ou plus portant le même nom dans une même portée ou dans des portées qui se chevauchent.
index.go
1234567891011func myFunc1() { var number int = 7 var number int = 9 // Error here } func myFunc2() { var number int = 7 if(2 > 1) { var number int = 9 // Error here } }
Cependant, il est possible de déclarer des variables portant le même nom dans des portées différentes :
index.go
1234567891011121314151617package main import "fmt" func myFunc1() { var number int = 7 fmt.Println("In Func 1:", number) } func myFunc2() { var number int = 9 fmt.Println("In Func 2:", number) } func main() { myFunc1() myFunc2() }
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain the difference between global and local scope with an example?
What happens if I try to access a variable outside its scope?
Can you clarify what is meant by overlapping scopes?
Awesome!
Completion rate improved to 1.96
Portées Locales et Globales
Glissez pour afficher le menu
À ce stade, il est essentiel d'approfondir le concept de portée afin de comprendre dans quelles zones des variables (ou constantes) spécifiques peuvent être accessibles ou non.
La portée d'une variable ou d'une constante définit les endroits où elle peut être utilisée.
Lorsqu'une variable ou une constante est déclarée en dehors de tout bloc de code, elle devient accessible dans l'ensemble du programme, ce qui lui confère une portée globale. Dans l'extrait de code suivant, la constante pi illustre cette portée globale :
index.go
12345678package main import "fmt" const pi float32 = 3.1415 func main() { fmt.Println(pi) }
À l'inverse, lorsqu'une variable ou une constante est déclarée à l'intérieur d'un bloc de code, elle reste accessible uniquement dans ce bloc de code spécifique ainsi que dans tout bloc de code imbriqué, le cas échéant.
L'illustration ci-dessous met en évidence les différences entre les portées globale et locale :
Le code suivant montre les zones où l'accès aux variables est autorisé et où des erreurs peuvent survenir :
index.go
12345678910111213141516171819202122232425262728package main import "fmt" func main() { var value_1 int = 1 // Condition 1 if(true) { var value_2 int = 2 // Condition 2 if (true) { var value_3 int = 3 fmt.Println("In Condition 2:", value_1) fmt.Println("In Condition 2:", value_2) fmt.Println("In Condition 2:", value_3) } fmt.Println("In Condition 1:", value_1) fmt.Println("In Condition 1:", value_2) fmt.Println("In Condition 1:", value_3) // Error here } fmt.Println("In Main:", value_1) fmt.Println("In Main:", value_2) // Error here fmt.Println("In Main:", value_3) // Error here }
La variable value_1 reste accessible dans tout le bloc de code main(), y compris dans les blocs de code imbriqués comme Condition 1 et Condition 2. Elle est également accessible dans Condition 1 et sa Condition 2 imbriquée.
Cependant, toute tentative d’y accéder directement en dehors du bloc main() entraînera une erreur. De même, la variable value_2, déclarée dans Condition 2, n’est accessible que dans ce bloc de code spécifique.
Il est essentiel de prendre en compte les portées dans le contexte des fonctions. Lorsqu’une variable ou une constante est déclarée à l’intérieur d’une fonction, elle reste confinée à cette fonction et n’est pas accessible dans d’autres fonctions, y compris main().
Remarque
main()fonctionne comme une fonction exécutée automatiquement lors de l’exécution du programme.
index.go
12345678func myFunc() { var number int = 7 fmt.Println(number) // Accessible here } func main() { fmt.Println(number) // Not accessible here }
Un autre point essentiel à retenir est qu’il n’est pas possible de déclarer deux variables ou plus portant le même nom dans une même portée ou dans des portées qui se chevauchent.
index.go
1234567891011func myFunc1() { var number int = 7 var number int = 9 // Error here } func myFunc2() { var number int = 7 if(2 > 1) { var number int = 9 // Error here } }
Cependant, il est possible de déclarer des variables portant le même nom dans des portées différentes :
index.go
1234567891011121314151617package main import "fmt" func myFunc1() { var number int = 7 fmt.Println("In Func 1:", number) } func myFunc2() { var number int = 9 fmt.Println("In Func 2:", number) } func main() { myFunc1() myFunc2() }
Merci pour vos commentaires !