Sobes.tech
Junior — Middle

É possível acessar uma variável declarada como pública e que está no escopo de suas chaves dentro de uma função?

sobes.tech IA

Resposta da IA

No Go, o âmbito de uma variável é limitado ao bloco em que ela é declarada. Se uma variável for declarada dentro de chaves numa função (variável local), ela só está disponível dentro dessa função e dos seus blocos internos. A visibilidade (exportabilidade) de uma variável em Go é determinada pela letra maiúscula no nome e refere-se à visibilidade de outros pacotes, não dentro da função.

Assim, dentro de uma função, pode aceder a uma variável declarada nas suas chaves se ela tiver sido declarada na mesma função ou em escopos externos. Se a variável for declarada dentro da função, ela é local e só está disponível dentro dessa função. Se a variável for declarada fora da função e exportada (pública), também pode ser acedida dentro da função.

Exemplo:

package main

import "fmt"

var PublicVar = "disponível em todo o pacote e de outros pacotes"

func exemplo() {
    localVar := "disponível apenas dentro de exemplo"
    fmt.Println(PublicVar) // acesso à variável pública
    fmt.Println(localVar)  // acesso à variável local
}

func main() {
    exemplo()
}

Se uma variável for declarada dentro de uma função, ela não pode ser acessada fora dessa função, mesmo que o seu nome seja "público" (com letra maiúscula).