The scope of a variable in Golang determines which part of the program the variable is accessible to. In Go, all identifiers have lexical scope, meaning the scope can be determined at compile time. A variable is only accessible within the block of code in which it is defined.

For example:
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)
}
Variable scope syntax in Golang
var variableName type = value
Local variables
Local variables are declared within a function or a block and cannot be accessed outside that block. They can also be declared within loops and conditionals but are limited to the scope of the block.
For example:
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
}
Result:
200
Global variables
Global variables are defined outside any function or block, making them accessible throughout the entire program.
For example:
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
}
Result:
100
Local variable priority
When a local variable has the same name as a global variable, the local variable takes precedence within its scope.
For example:
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ộ
}
Result:
Biến cục bộ có mức độ ưu tiên: 200