Sobes.tech
Junior — Middle

Czy można uzyskać dostęp do zmiennej zadeklarowanej jako publiczna i znajdującej się w zakresie jej nawiasów klamrowych z poziomu funkcji?

sobes.tech AI

Odpowiedź od AI

W Go zakres widoczności zmiennej jest ograniczony do bloku, w którym została zadeklarowana. Jeśli zmienna jest zadeklarowana w nawiasach klamrowych funkcji (zmienna lokalna), jest dostępna tylko w tej funkcji i jej zagnieżdżonych blokach. Widoczność (eksportowalność) zmiennej w Go jest określana przez wielką literę na początku nazwy i odnosi się do widoczności z innych pakietów, a nie wewnątrz funkcji.

W związku z tym, wewnątrz funkcji można uzyskać dostęp do zmiennej zadeklarowanej w jej nawiasach, jeśli została zadeklarowana w tej samej funkcji lub w zewnętrznych zakresach widoczności. Jeśli zmienna jest zadeklarowana w funkcji, jest lokalna i dostępna tylko w tej funkcji. Jeśli zmienna jest zadeklarowana poza funkcją i jest eksportowana (publiczna), można się do niej odwołać również wewnątrz funkcji.

Przykład:

package main

import "fmt"

var PublicVar = "dostępna wszędzie w pakiecie i z innych pakietów"

func przykład() {
    localVar := "dostępna tylko w przykład"
    fmt.Println(PublicVar) // dostęp do zmiennej publicznej
    fmt.Println(localVar)  // dostęp do zmiennej lokalnej
}

func main() {
    przykład()
}

Jeśli zmienna jest zadeklarowana w funkcji, nie może być dostępna poza nią, nawet jeśli jej nazwa jest "publiczna" (z wielką literą).