Sobes.tech
Junior — Middle

Lehetséges-e egy függvényen belül hozzáférni egy nyilvánosként deklarált és a kapcsos zárójelek területén lévő változóhoz?

sobes.tech MI

Válasz az MI-től

Go-ban egy változó láthatósága csak abban a blokkban van, ahol deklarálva van. Ha egy változót egy függvény zárójelei között deklarálunk (helyi változó), akkor csak ebben a függvényben és annak beágyazott blokkjában érhető el. A változó nyilvánossága (exportálhatósága) Go-ban a név első nagybetűs karakterével van meghatározva, és más csomagokból való láthatóságot jelent, nem a függvényen belül.

Így a függvényen belül hozzáférhetsz egy olyan változóhoz, amely ugyanabban a függvényben vagy külső határokon belül van deklarálva. Ha a változó a függvényen belül van deklarálva, akkor helyi és csak ebben a függvényben érhető el. Ha a változó a függvényen kívül van deklarálva és exportálva (nyilvános), akkor a függvényen belül is elérhető.

Példa:

package main

import "fmt"

var PublicVar = "elérhető az egész csomagban és más csomagokból"

func példa() {
    localVar := "csak a példa belsejében elérhető"
    fmt.Println(PublicVar) // hozzáférés a nyilvános változóhoz
    fmt.Println(localVar)  // hozzáférés a helyi változóhoz
}

func main() {
    példa()
}

Ha egy változót a függvényen belül deklarálsz, akkor nem lehet azon kívül elérni, még akkor sem, ha a neve "nyilvános" (nagybetűvel kezdődik).