Sobes.tech
Junior — Middle

Da li je moguće unutar funkcije pristupiti promenljivoj koja je deklarisana kao javna i nalazi se u njenom opsegu unutar vitičastih zagrada?

sobes.tech АИ

Одговор од АИ

U Go, opseg promenljive je ograničen na blok u kojem je deklarisana. Ako je promenljiva deklarisana unutar zagrada funkcije (lokalna promenljiva), dostupna je samo unutar te funkcije i njenih ugnježdenih blokova. Vidljivost (eksportabilnost) promenljive u Go određuje veliko slovo na početku imena i odnosi se na vidljivost iz drugih paketa, a ne unutar funkcije.

Dakle, unutar funkcije možete pristupiti promenljivoj deklarisanoj u njenim zagradama ako je deklarisana u istoj funkciji ili u spoljnim oblastima vidljivosti. Ako je promenljiva deklarisana unutar funkcije, ona je lokalna i dostupna je samo unutar te funkcije. Ako je promenljiva deklarisana izvan funkcije i eksportovana (javno dostupna), možete joj pristupiti i unutar funkcije.

Primer:

package main

import "fmt"

var PublicVar = "dostupna svuda u paketu i iz drugih paketa"

func primer() {
    localVar := "dostupna samo unutar primera"
    fmt.Println(PublicVar) // pristup javnoj promenljivoj
    fmt.Println(localVar)  // pristup lokalnoj promenljivoj
}

func main() {
    primer()
}

Ako je promenljiva deklarisana unutar funkcije, ona ne može biti dostupna van te funkcije, čak i ako je njeno ime "javno" (sa velikim slovom).