L'ambito di una variabile in Golang determina la parte del programma in cui tale variabile è accessibile. In Go tutti gli identificatori hanno un ambito lessicale, il che significa che l'ambito può essere determinato in fase di compilazione. Una variabile è accessibile solo all'interno del blocco di codice in cui è definita.

Per esempio:
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)
}
Sintassi dell'ambito delle variabili in Golang
var variableName type = value
Variabili locali
Le variabili locali vengono dichiarate all'interno di una funzione o di un blocco e non sono accessibili all'esterno del blocco. Possono anche essere dichiarati in cicli e istruzioni condizionali, ma sono limitati all'ambito dei blocchi.
Per esempio:
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
}
Risultato:
200
Variabili globali
Le variabili globali sono definite all'esterno di qualsiasi funzione o blocco, rendendole accessibili nell'intero programma.
Per esempio:
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
}
Risultato:
100
Priorità delle variabili locali
Quando una variabile locale ha lo stesso nome di una variabile globale, la variabile locale ha la precedenza nel suo ambito.
Per esempio:
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ộ
}
Risultato:
Biến cục bộ có mức độ ưu tiên: 200