Lokale en Globale Scopes
Op dit punt is het essentieel om het concept van scopes te behandelen om te begrijpen waar specifieke variabelen (of constanten) toegankelijk zijn en waar niet.
De scope van een variabele of constante bepaalt waar deze gebruikt kan worden.
Wanneer een variabele of constante buiten een codeblok wordt gedeclareerd, is deze toegankelijk in het gehele programma en wordt dit aangeduid als een globale scope. In het volgende codevoorbeeld illustreert de constante pi deze globale scope:
index.go
12345678package main import "fmt" const pi float32 = 3.1415 func main() { fmt.Println(pi) }
Omgekeerd, wanneer een variabele of constante binnen een codeblok wordt gedeclareerd, blijft deze uitsluitend toegankelijk binnen dat specifieke codeblok en eventuele geneste codeblokken, indien van toepassing.
De onderstaande illustratie geeft de verschillen weer tussen globale en lokale scopes:
De volgende code toont de gebieden waar variabeletoegang is toegestaan en waar fouten kunnen optreden:
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 }
De variabele value_1 blijft toegankelijk binnen het gehele main() codeblok, inclusief geneste codeblokken zoals Voorwaarde 1 en Voorwaarde 2. Zij is ook toegankelijk binnen Voorwaarde 1 en de daarin geneste Voorwaarde 2.
Echter, een poging om deze direct buiten het main() blok te benaderen resulteert in een foutmelding. Evenzo is de variabele value_2, gedeclareerd binnen Voorwaarde 2, alleen toegankelijk binnen dat specifieke codeblok.
Het is essentieel om rekening te houden met scopes in de context van functies. Wanneer we een variabele of constante binnen een functie declareren, blijft deze beperkt tot die functie en is niet toegankelijk in andere functies, inclusief main().
Opmerking
main()fungeert als een automatisch uitgevoerde functie wanneer het programma wordt gestart.
index.go
12345678func myFunc() { var number int = 7 fmt.Println(number) // Accessible here } func main() { fmt.Println(number) // Not accessible here }
Een ander belangrijk punt om te onthouden is dat we niet twee of meer variabelen met dezelfde naam binnen dezelfde scope of overlappende scopes kunnen declareren.
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 } }
Het is echter mogelijk om variabelen met dezelfde naam in verschillende scopes te declareren:
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() }
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 1.96
Lokale en Globale Scopes
Veeg om het menu te tonen
Op dit punt is het essentieel om het concept van scopes te behandelen om te begrijpen waar specifieke variabelen (of constanten) toegankelijk zijn en waar niet.
De scope van een variabele of constante bepaalt waar deze gebruikt kan worden.
Wanneer een variabele of constante buiten een codeblok wordt gedeclareerd, is deze toegankelijk in het gehele programma en wordt dit aangeduid als een globale scope. In het volgende codevoorbeeld illustreert de constante pi deze globale scope:
index.go
12345678package main import "fmt" const pi float32 = 3.1415 func main() { fmt.Println(pi) }
Omgekeerd, wanneer een variabele of constante binnen een codeblok wordt gedeclareerd, blijft deze uitsluitend toegankelijk binnen dat specifieke codeblok en eventuele geneste codeblokken, indien van toepassing.
De onderstaande illustratie geeft de verschillen weer tussen globale en lokale scopes:
De volgende code toont de gebieden waar variabeletoegang is toegestaan en waar fouten kunnen optreden:
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 }
De variabele value_1 blijft toegankelijk binnen het gehele main() codeblok, inclusief geneste codeblokken zoals Voorwaarde 1 en Voorwaarde 2. Zij is ook toegankelijk binnen Voorwaarde 1 en de daarin geneste Voorwaarde 2.
Echter, een poging om deze direct buiten het main() blok te benaderen resulteert in een foutmelding. Evenzo is de variabele value_2, gedeclareerd binnen Voorwaarde 2, alleen toegankelijk binnen dat specifieke codeblok.
Het is essentieel om rekening te houden met scopes in de context van functies. Wanneer we een variabele of constante binnen een functie declareren, blijft deze beperkt tot die functie en is niet toegankelijk in andere functies, inclusief main().
Opmerking
main()fungeert als een automatisch uitgevoerde functie wanneer het programma wordt gestart.
index.go
12345678func myFunc() { var number int = 7 fmt.Println(number) // Accessible here } func main() { fmt.Println(number) // Not accessible here }
Een ander belangrijk punt om te onthouden is dat we niet twee of meer variabelen met dezelfde naam binnen dezelfde scope of overlappende scopes kunnen declareren.
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 } }
Het is echter mogelijk om variabelen met dezelfde naam in verschillende scopes te declareren:
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() }
Bedankt voor je feedback!