Sobes.tech
Junior — Middle

Lze uvnitř funkce získat přístup k proměnné deklarované jako veřejná a nacházející se v jejím bloku složených závorek?

sobes.tech AI

Odpověď od AI

V Go je rozsah proměnné omezen na blok, ve kterém je deklarována. Pokud je proměnná deklarována uvnitř složených závorek funkce (lokální proměnná), je dostupná pouze uvnitř této funkce a jejích vnořených blocích. Viditelnost (exportovatelnost) proměnné v Go je určena velkým písmenem na začátku jejího jména a vztahuje se na viditelnost z jiných balíčků, nikoliv uvnitř funkce.

Tedy uvnitř funkce můžete přistupovat k proměnné deklarované v jejích složených závorkách, pokud byla deklarována ve stejné funkci nebo v externích oblastech viditelnosti. Pokud je proměnná deklarována uvnitř funkce, je lokální a dostupná pouze uvnitř této funkce. Pokud je proměnná deklarována mimo funkci a je exportována (veřejná), lze k ní také uvnitř funkce přistupovat.

Příklad:

package main

import "fmt"

var PublicVar = "přístupná všude v balíčku a z jiných balíčků"

func příklad() {
    localVar := "přístupná pouze uvnitř příkladu"
    fmt.Println(PublicVar) // přístup k veřejné proměnné
    fmt.Println(localVar)  // přístup k lokální proměnné
}

func main() {
    příklad()
}

Pokud je proměnná deklarována uvnitř funkce, nemůže být dostupná mimo tuto funkci, i když její jméno začíná velkým písmenem (je "veřejná").