Sobes.tech
Junior — Middle

Je možné vo vnútri funkcie získať prístup k premennej, ktorá je deklarovaná ako verejná a nachádza sa v oblasti jej zložených zátvoriek?

sobes.tech AI

Odpoveď od AI

V Go je rozsah premennej obmedzený na blok, v ktorom je deklarovaná. Ak je premennej deklarovaná v zátvorkách funkcie (lokálna premenná), je dostupná iba v tejto funkcii a jej vnorených blokoch. Viditeľnosť (exportovateľnosť) premennej v Go je určená veľkým písmenom na začiatku jej mena a týka sa viditeľnosti z iných balíkov, nie vo vnútri funkcie.

Takže vo vnútri funkcie môžete získať prístup k premennej deklarovanej v jej zátvorkách, ak bola deklarovaná v tej istej funkcii alebo v externých oblastiach viditeľnosti. Ak je premennej deklarovaná vo vnútri funkcie, je lokálna a dostupná iba v tejto funkcii. Ak je premennej deklarovaná mimo funkcie a je exportovaná (verejná), môžete k nej tiež pristupovať vo vnútri funkcie.

Príklad:

package main

import "fmt"

var PublicVar = "dostupná všade v balíku a z iných balíkov"

func príklad() {
    localVar := "len vo vnútri príkladu dostupná"
    fmt.Println(PublicVar) // prístup k verejnej premennej
    fmt.Println(localVar)  // prístup k lokálnej premennej
}

func main() {
    príklad()
}

Ak je premennej deklarovaná vo vnútri funkcie, nemôže byť dostupná mimo tejto funkcie, aj keď jej meno začína veľkým písmenom (je "verejná").