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).