Sobes.tech
Junior — Middle

Kas funktsiooni sees on võimalik saada ligi avalikult deklareeritud ja selle sulgudes asuva muutuja?

sobes.tech AI

Vastus AI-lt

Go-sises, muutujate ulatus on piiratud nende deklareerimisbloki kuni. Kui muutuja on deklareeritud funktsiooni sulgude vahel (kohalik muutuja), siis see on saadaval ainult selle funktsiooni ja selle sisemiste blokkide jaoks. Go-s määrab muutuja nähtavuse (eksportimise) selle nime suure tähega alguse ja see viitab nähtavusele teistest paketidest, mitte funktsiooni sees.

Seega, funktsiooni sees saate juurde pääseda muutuja juurde, mis on deklareeritud selle sulgudes, kui see on deklareeritud samas funktsioonis või väliste nähtavuspiirkondades. Kui muutuja on deklareeritud funktsiooni sees, on see lokaalne ja saadaval ainult selles. Kui muutuja on deklareeritud väljaspool funktsiooni ja eksportitud (avalik), saab sellele viidata ka funktsiooni sees.

Näide:

package main

import "fmt"

var PublicVar = "saadaval kogu paketis ja teistest paketidest"

func näide() {
    localVar := "ainult näites saadaval"
    fmt.Println(PublicVar) // juurdepääs avalikule muutujale
    fmt.Println(localVar)  // juurdepääs lokaalsele muutujale
}

func main() {
    näide()
}

Kui muutuja on deklareeritud funktsiooni sees, ei saa sellele väljaspool sellele viidata, isegi kui selle nimi on "avalik" (suure tähega).