Sobes.tech
Junior — Middle

Ar galima funkcijos viduje pasiekti viešai paskelbtą ir jos skliausteliuose esančią kintamąjį?

sobes.tech AI

Atsakymas iš AI

Go apimtis yra apribotas iki bloko, kuriame jis deklaruotas. Jei kintamasis deklaruojamas funkcijos skliaustuose (vietinis kintamasis), jis yra prieinamas tik šioje funkcijoje ir jos įdėtuose blokuose. Go kalboje kintamojo matomumas (eksportavimas) nustatomas pagal didžiąją raidę pradžioje ir nurodo matomumą iš kitų paketų, ne funkcijos viduje.

Taigi, funkcijos viduje galite pasiekti kintamąjį, deklaruotą jos skliaustuose, jei jis buvo deklaruotas toje pačioje funkcijoje arba išoriniuose matomumo laukuose. Jei kintamasis deklaruotas funkcijos viduje, jis yra vietinis ir prieinamas tik joje. Jei kintamasis deklaruotas už funkcijos ribų ir eksportuotas (viešas), prie jo galima prieiti ir funkcijos viduje.

Pavyzdys:

package main

import "fmt"

var PublicVar = "prieinama visame pakete ir iš kitų paketų"

func pavyzdys() {
    localVar := "tik pavyzdyje prieinama"
    fmt.Println(PublicVar) // prieiga prie viešo kintamojo
    fmt.Println(localVar)  // prieiga prie vietinio kintamojo
}

func main() {
    pavyzdys()
}

Jei kintamasis deklaruotas funkcijos viduje, jis negali būti pasiekiamas už jos ribų, net jei jo pavadinimas yra "viešas" (didžiąja raide).