O escopo de uma variável em Golang determina a parte do programa onde essa variável é acessível. Em Go, todos os identificadores têm escopo lexical, o que significa que o escopo pode ser determinado em tempo de compilação. Uma variável só é acessível dentro do bloco de código em que ela é definida.

Por exemplo:
package main
import "fmt"
// Khai báo biến toàn cụ
var myVariable int = 100
func main() {
// Biến cục bộ trong hàm chính
var localVar int = 200
fmt.Printf("Inside main - Global variable: %d\n", myVariable)
fmt.Printf("Inside main - Local variable: %d\n", localVar)
display()
}
func display() {
fmt.Printf("Inside display - Global variable: %d\n", myVariable)
}
Sintaxe de escopo de variável em Golang
var variableName type = value
Variáveis locais
Variáveis locais são declaradas dentro de uma função ou bloco e não podem ser acessadas fora desse bloco. Eles também podem ser declarados em loops e condicionais, mas são limitados ao escopo do bloco.
Por exemplo:
package main
import "fmt"
func main() {
var localVar int = 200 // Biến cục bộ
fmt.Printf("%d\n", localVar) // Có thể truy cập tại đây
}
Resultado:
200
Variáveis globais
Variáveis globais são definidas fora de qualquer função ou bloco, tornando-as acessíveis em todo o programa.
Por exemplo:
package main
import "fmt"
// Khai báo biến toàn cục
var myVariable int = 100 // Biến toàn cục
func main() {
fmt.Printf("%d\n", myVariable) // Có thể truy cập tại đây
}
Resultado:
100
Prioridade de variável local
Quando uma variável local tem o mesmo nome de uma variável global, a variável local tem precedência dentro de seu escopo.
Por exemplo:
package main
import "fmt"
// Khai báo biến toàn cục
var myVariable int = 100 // Biến toàn cục
func main() {
var myVariable int = 200 // Biến cục bộ
fmt.Printf("Local variable takes precedence: %d\n", myVariable) // Truy cập biến cục bộ
}
Resultado:
Biến cục bộ có mức độ ưu tiên: 200