English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Prerequisitos:Variável do Linguagem Go
O escopo de uma variável pode ser definido como parte do programa que pode acessar uma variável específica. Pode ser definido em classes, métodos, loops, etc. Como no C / C ++IgualNo Golang, todos os identificadores são de escopo léxico (ou estático), o que significa que o escopo de uma variável pode ser determinado durante a compilação. Ou você pode dizer que uma variável pode ser chamada apenas a partir do bloco de código onde foi definida.
As regras de escopo de variáveis no Golang podem ser divididas em duas categorias, dependendo da posição de declaração da variável:
variável local(Declarado dentro de bloco ou função)
variável global(Declarado fora de bloco ou função)
As variáveis declaradas dentro de funções ou blocos são chamadas de variáveis locais. Elas não podem ser acessadas fora desses blocos ou funções.
Essas variáveis também podem ser declaradas dentro de estruturas de controle como for e while em funções.
mas essas variáveis podem ser acessadas por código aninhado dentro da função.
esses variáveis também são chamados de variáveis de bloco.
se essas variáveis forem declaradas duas vezes no mesmo escopo com o mesmo nome, haverá um erro de compilação.
após a execução da função, essas variáveis não existem mais.
as variáveis declaradas fora de um loop também podem ser acessadas dentro de loops aninhados. Isso significa que métodos e todos os loops podem acessar a variável global. As variáveis locais podem ser acessadas pelo loop e executar a função dentro dessa função.
as variáveis declaradas dentro de um loop não são visíveis fora do loop.
//variável local package main import "fmt" //função principal func main() { //aqui começa o escopo local da função principal //variável local dentro da função principal var myvariable1, myvariable2 int = 69, 145 // apresenta o valor da variável fmt.Printf("myvariable1 o valor da variável: %d\n", myvariable1) fmt.Printf("myvariable2 o valor da variável: %d\n", myvariable2) } // aqui termina o escopo local da função principal
Saída:
myvariable1 o valor da variável: 69 myvariable2 o valor da variável: 145
As variáveis definidas fora de funções ou blocos são chamadas de variáveis globais.
esses estão disponíveis durante toda a vida do programa.
esses são declarados no topo do programa, fora de todas as funções ou blocos.
esses podem ser acessados de qualquer parte do programa.
//variável global package main import "fmt" // declaração de variável global var myvariable1 int = 100 func main() { // variável local dentro da função principal var myvariable2 int = 200 //apresenta a variável global fmt.Printf("Variável global myvariable1 seu valor é: %d\n", myvariable1) //apresenta a variável local fmt.Printf("Variável local myvariable2 seu valor é: %d\n", myvariable2) //chama a função display() } func display() { // apresenta a variável global fmt.Printf("Variável global myvariable1 seu valor é: %d\n", myvariable1) }
Saída:
Variável global myvariable1 O valor é: 100 Variável local myvariable2 O valor é: 200 Variável global myvariable1 O valor é: 100
Atenção:O que acontece se houver uma variável local com o mesmo nome da variável global dentro da função?
A resposta é simples, ou seja, o compilador prefere a variável local. Normalmente, quando dois variáveis com o mesmo nome são definidos, o compilador gera um erro de compilação. Mas, se as variáveis forem definidas em diferentes escopos, o compilador permite isso. Desde que uma variável local com o mesmo nome da variável global seja definida, o compilador priorizará a variável local.
Exemplo:No programa a seguir, você pode claramente ver a saída. Devido a myvariable1vale200, fornecido no função main. Portanto, podemos dizer que as variáveis locais têm uma prioridade maior do que as variáveis globais.
//O programa Go mostra a prioridade do compilador //variável local sobre a variável global package main import "fmt" //declaração de variável global var myvariable1 int = 100 func main() { //variável local dentro da função principal //é a mesma que a variável global var myvariable1 int = 200 // apresenta fmt.Printf("Variável myvariable1 seu valor é: %d\n", myvariable1) }
Saída:
Variável myvariable1 O valor é: 200