一个变量(常量、类型或函数)在程序中都有一定的作用范围,称之为作用域。Go语言中的变量分为三种类型,分别是局部变量、全局变量和形式参数。如果变量在函数体外声明,则被称为全局变量,可以在整个包甚至外部包...
一个变量(常量、类型或函数)在程序中都有一定的作用范围,称之为作用域。Go语言中的变量分为三种类型,分别是局部变量、全局变量和形式参数。
如果变量在函数体外声明,则被称为全局变量,可以在整个包甚至外部包(被导出后)使用。如果变量声明在函数体内部,则被称为局部变量,它的作用域只在函数内部。至于形式参数则是在函数定义中函数名右边小括号(参数列表)中的变量,形式参数也是局部变量的一种,只能在函数体内部使用。
在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。
package main
import (
"fmt"
)
func main() {
//声明局部变量 a 和 b 并赋值
var a int = 3
var b int = 4
//声明局部变量 c 并计算 a 和 b 的和
c := a + b
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
}运行结果如下所示:
a = 3, b = 4, c = 7
在函数体外声明的变量称之为全局变量,全局变量可以在整个包甚至外部包(被导出后)使用。
package main
import "fmt"
//声明全局变量
var c int
func main() {
//声明局部变量
var a, b int
//初始化参数
a = 3
b = 4
c = a + b
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
}运行结果如下所示:
a = 3, b = 4, c = 7
Go语言程序中全局变量与局部变量名称可以相同,但是函数体内的局部变量会被优先考虑。
package main
import "fmt"
//声明全局变量
var a float32 = 3.14
func main() {
//声明局部变量
var a int = 3
fmt.Printf("a = %d\n", a)
}运行结果如下所示:
a = 3
形式参数会作为函数的局部变量来使用。
package main
import (
"fmt"
)
//全局变量 a
var a int = 13
func main() {
//局部变量 a 和 b
var a int = 3
var b int = 4
fmt.Printf("main() 函数中 a = %d\n", a)
fmt.Printf("main() 函数中 b = %d\n", b)
c := sum(a, b)
fmt.Printf("main() 函数中 c = %d\n", c)
}
func sum(a, b int) int {
fmt.Printf("sum() 函数中 a = %d\n", a)
fmt.Printf("sum() 函数中 b = %d\n", b)
num := a + b
return num
}运行结果如下所示:
main() 函数中 a = 3
main() 函数中 b = 4
sum() 函数中 a = 3
sum() 函数中 b = 4
main() 函数中 c = 7