English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico no Golang

Sentenças de controle no Golang

Função & Método no Golang

Estrutura no Golang

Fatia & Array no Golang

String (String) no Golang

Ponteiro no Golang

Interfaces no Golang

Concorrência no Golang

Exceções (Error) no Golang

Outros itens Golang

Escopo de variáveis no Go Linguagem

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)

variável local

  • 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

variável global

  • 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