跳到主要内容

作用域

所谓变量作用域,即变量可以作用的范围。

作用域(scope)通常来说,程序中的标识符并不是在任何位置都是有效可用的,而限定这个标识符的可用性的范围就是这个名字的作用域。

变量根据所在位置的不同可以划分为全局变量和局部变量

  • 局部变量 :写在中或者函数中或者函数的形参, 都是局部变量
提示

1、局部变量的作用域是从定义的那一行开始, 直到遇到 } 结束或者遇到return为止

提示

2、局部变量, 只有执行了才会分配存储空间, 只要离开作用域就会自动释放

提示

3、局部变量存储在栈区

提示

4、局部变量如果没有使用, 编译会报错。全局变量如果没有使用, 编译不会报错

提示

5、:=只能用于局部变量, 不能用于全局变量

  • 全局变量 :函数外面的就是全局变量
提示

1、全局变量的作用域是从定义的那一行开始, 直到文件末尾为止

提示

2、全局变量, 只要程序一启动就会分配存储空间, 只有程序关闭才会释放存储空间,

提示

3、全局变量存储在静态区(数据区)

func foo()  {

// var x =10
x = 10
fmt.Println(x)
}

var x = 30 // 全局变量
func main() {

// var x = 20
foo()
fmt.Println(x)
}

注意,if,for语句具备独立开辟作用域的能力:

// if的局部空间
if true{

x:=10

fmt.Println(x)
}

fmt.Println(x)

// for的局部空间
for i:=0;i<10 ;i++ {

}
fmt.Println(i)