Sobes.tech
Junior — Middle

Vai funkcijas iekšienē ir iespējams piekļūt publiski deklarētai un tās skaldnēs esošai mainīgajai?

sobes.tech AI

Atbilde no AI

Go ietvaru apjoms ir mainīgajiem ir ierobežojums līdz blokam, kurā tie ir deklarēti. Ja mainīgais ir deklarēts funkcijas iekavās (vietējais mainīgais), tas ir pieejams tikai šajā funkcijā un tās iekšējos blokos. Go valodā mainīgā redzamība (eksportējamība) tiek noteikta ar lielo burtu sākumā un attiecas uz redzamību no citiem paketēm, nevis funkcijas iekšienē.

Tādējādi, funkcijas iekšienē, jūs varat piekļūt mainīgajam, kas ir deklarēts tās iekavās, ja tas ir deklarēts tajā pašā funkcijā vai ārējās redzamības laukos. Ja mainīgais ir deklarēts funkcijas iekšienē, tas ir vietējs un pieejams tikai tajā. Ja mainīgais ir deklarēts ārpus funkcijas un ir eksportēts (publisks), tam arī var piekļūt funkcijas iekšienē.

Piemērs:

package main

import "fmt"

var PublicVar = "pieejams visā paketē un no citām paketēm"

func piemērs() {
    localVar := "tikai piemēra iekšienē pieejams"
    fmt.Println(PublicVar) // piekļuve publiskajam mainīgajam
    fmt.Println(localVar)  // piekļuve vietējam mainīgajam
}

func main() {
    piemērs()
}

Ja mainīgais ir deklarēts funkcijas iekšienē, tas nevar būt pieejams ārpus tās, pat ja tā nosaukums ir "publisks" (ar lielo burtu).