Đi - Quy tắc phạm vi
Phạm vi trong bất kỳ chương trình nào là một vùng của chương trình nơi một biến xác định có thể tồn tại và xa hơn nữa, biến đó không thể được truy cập. Có ba nơi mà các biến có thể được khai báo trong ngôn ngữ lập trình Go:
Bên trong một hàm hoặc một khối (local biến)
Ngoài tất cả các chức năng (global biến)
Trong định nghĩa của tham số hàm (formal thông số)
Hãy để chúng tôi tìm hiểu những gì local và global biến và là gì formal thông số.
Biến cục bộ
Các biến được khai báo bên trong một hàm hoặc một khối được gọi là biến cục bộ. Chúng chỉ có thể được sử dụng bởi các câu lệnh bên trong hàm hoặc khối mã đó. Các biến cục bộ không được biết đến với các hàm bên ngoài của chúng. Ví dụ sau sử dụng các biến cục bộ. Ở đây tất cả các biến a, b và c là cục bộ của hàm main ().
package main
import "fmt"
func main() {
/* local variable declaration */
var a, b, c int
/* actual initialization */
a = 10
b = 20
c = a + b
fmt.Printf ("value of a = %d, b = %d and c = %d\n", a, b, c)
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
value of a = 10, b = 20 and c = 30
Biến toàn cục
Các biến toàn cục được định nghĩa bên ngoài một hàm, thường nằm trên đầu chương trình. Các biến toàn cục giữ giá trị của chúng trong suốt thời gian tồn tại của chương trình và chúng có thể được truy cập bên trong bất kỳ hàm nào được định nghĩa cho chương trình.
Một biến toàn cục có thể được truy cập bởi bất kỳ hàm nào. Có nghĩa là, một biến toàn cục có sẵn để sử dụng trong suốt chương trình sau khi khai báo. Ví dụ sau sử dụng cả biến cục bộ và toàn cục:
package main
import "fmt"
/* global variable declaration */
var g int
func main() {
/* local variable declaration */
var a, b int
/* actual initialization */
a = 10
b = 20
g = a + b
fmt.Printf("value of a = %d, b = %d and g = %d\n", a, b, g)
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
value of a = 10, b = 20 and g = 30
Một chương trình có thể có cùng tên cho các biến cục bộ và toàn cục nhưng giá trị của biến cục bộ bên trong một hàm được ưu tiên. Ví dụ -
package main
import "fmt"
/* global variable declaration */
var g int = 20
func main() {
/* local variable declaration */
var g int = 10
fmt.Printf ("value of g = %d\n", g)
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
value of g = 10
Thông số chính thức
Các tham số chính thức được coi là các biến cục bộ có trong hàm đó và chúng được ưu tiên hơn các biến toàn cục. Ví dụ -
package main
import "fmt"
/* global variable declaration */
var a int = 20;
func main() {
/* local variable declaration in main function */
var a int = 10
var b int = 20
var c int = 0
fmt.Printf("value of a in main() = %d\n", a);
c = sum( a, b);
fmt.Printf("value of c in main() = %d\n", c);
}
/* function to add two integers */
func sum(a, b int) int {
fmt.Printf("value of a in sum() = %d\n", a);
fmt.Printf("value of b in sum() = %d\n", b);
return a + b;
}
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:
value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30
Khởi tạo các biến cục bộ và toàn cục
Các biến cục bộ và toàn cục được khởi tạo thành giá trị mặc định của chúng, là 0; trong khi con trỏ được khởi tạo thành nil.
Loại dữ liệu | Giá trị mặc định ban đầu |
---|---|
int | 0 |
float32 | 0 |
con trỏ | không |