Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Lokale en Globale Scopes | Functies
Introductie tot Golang

bookLokale 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

index.go

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

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 }

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

index.go

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

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 } }

Het is echter mogelijk om variabelen met dezelfde naam in verschillende scopes te declareren:

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

In welk bereik moeten we var value int = 6 plaatsen om fouten te voorkomen?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 2

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 1.96

bookLokale 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

index.go

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

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 }

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

index.go

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

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 } }

Het is echter mogelijk om variabelen met dezelfde naam in verschillende scopes te declareren:

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

In welk bereik moeten we var value int = 6 plaatsen om fouten te voorkomen?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 2
some-alt