Sobes.tech
Junior — Middle

Is het mogelijk om binnen een functie toegang te krijgen tot een variabele die als openbaar is gedeclareerd en zich binnen het bereik van haar accolades bevindt?

sobes.tech AI

Antwoord van AI

In Go is de scope van een variabele beperkt tot het blok waarin deze is gedeclareerd. Als een variabele binnen de accolades van een functie wordt gedeclareerd (lokale variabele), is deze alleen binnen die functie en de geneste blokken ervan toegankelijk. De zichtbaarheid (exporteerbaarheid) van een variabele in Go wordt bepaald door de hoofdletter aan het begin van de naam en verwijst naar de zichtbaarheid vanuit andere pakketten, niet binnen de functie.

Dus, binnen een functie, kun je toegang krijgen tot een variabele die in haar accolades is gedeclareerd, als deze in dezelfde functie of in externe scopes is gedeclareerd. Als de variabele binnen de functie is gedeclareerd, is deze lokaal en alleen binnen die functie toegankelijk. Als de variabele buiten de functie is gedeclareerd en geëxporteerd (publiek), kan deze ook binnen de functie worden benaderd.

Voorbeeld:

package main

import "fmt"

var PublicVar = "beschikbaar in heel het pakket en vanuit andere pakketten"

func voorbeeld() {
    localVar := "alleen binnen voorbeeld toegankelijk"
    fmt.Println(PublicVar) // toegang tot de publieke variabele
    fmt.Println(localVar)  // toegang tot de lokale variabele
}

func main() {
    voorbeeld()
}

Als een variabele binnen een functie wordt gedeclareerd, kan deze niet buiten die functie worden benaderd, zelfs niet als de naam "publiek" is (met een hoofdletter).