Область действия переменной в Golang определяет часть программы, где эта переменная доступна. В Go все идентификаторы имеют лексическую область действия, то есть область действия можно определить во время компиляции. Переменная доступна только в пределах того блока кода, в котором она определена.

Например:
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)
}
Синтаксис области действия переменных в Golang
var variableName type = value
Локальные переменные
Локальные переменные объявляются внутри функции или блока и не могут быть доступны за пределами этого блока. Их также можно объявлять в циклах и условных операторах, но область их действия ограничена блоком.
Например:
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
}
Результат:
200
Глобальные переменные
Глобальные переменные определяются вне какой-либо функции или блока, что делает их доступными во всей программе.
Например:
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
}
Результат:
100
Приоритет локальной переменной
Если локальная переменная имеет то же имя, что и глобальная переменная, то локальная переменная имеет приоритет в своей области действия.
Например:
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ộ
}
Результат:
Biến cục bộ có mức độ ưu tiên: 200