Zakres zmiennej w języku Go określa część programu, w której dana zmienna jest dostępna. W języku Go wszystkie identyfikatory mają zakres leksykalny, co oznacza, że zakres można określić w czasie kompilacji. Dostęp do zmiennej jest możliwy wyłącznie w bloku kodu, w którym została zdefiniowana.

Na przykład:
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)
}
Składnia zakresu zmiennych w Golang
var variableName type = value
Zmienne lokalne
Zmienne lokalne deklaruje się wewnątrz funkcji lub bloku i nie można uzyskać do nich dostępu spoza tego bloku. Można je również deklarować w pętlach i warunkach, ale są one ograniczone do zakresu bloku.
Na przykład:
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
}
Wynik:
200
Zmienne globalne
Zmienne globalne definiuje się poza jakąkolwiek funkcją lub blokiem, dzięki czemu są dostępne w całym programie.
Na przykład:
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
}
Wynik:
100
Priorytet zmiennej lokalnej
Jeżeli zmienna lokalna ma taką samą nazwę jak zmienna globalna, zmienna lokalna ma pierwszeństwo w jej zakresie.
Na przykład:
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ộ
}
Wynik:
Biến cục bộ có mức độ ưu tiên: 200