Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Portées Locales et Globales | Fonctions
Introduction à Golang

bookPorté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

index.go

copy
12345678
package 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

index.go

copy
12345678910111213141516171819202122232425262728
package 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

index.go

copy
12345678
func 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

index.go

copy
1234567891011
func 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

index.go

copy
1234567891011121314151617
package 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() }
question mark

Dans quelle portée devons-nous placer var value int = 6 afin d'éviter toute erreur ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 2

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

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

bookPorté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

index.go

copy
12345678
package 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

index.go

copy
12345678910111213141516171819202122232425262728
package 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

index.go

copy
12345678
func 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

index.go

copy
1234567891011
func 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

index.go

copy
1234567891011121314151617
package 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() }
question mark

Dans quelle portée devons-nous placer var value int = 6 afin d'éviter toute erreur ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 2
some-alt