Go 作用域规则
在任何编程语言中,作用域是程序中定义变量存在的区域,超出该区域,变量将无法访问。在Go编程语言中,有三个地方可以声明变量:
- 在函数或块内部( 局部 变量)
-
在所有函数外部( 全局 变量)
-
在函数参数的定义中( 形式 参数)
让我们来了解一下什么是 局部 变量和 全局 变量以及什么是 形式 参数。
局部变量
在函数或块内部声明的变量被称为局部变量。它们只能被该函数或代码块中的语句使用。局部变量对于它们自己之外的函数是不可知的。下面的示例使用了局部变量。在这里,所有变量a、b和c都是main()函数的局部变量。
当上述代码被编译和执行时,它会产生以下结果 –
全局变量
全局变量是在函数之外定义的,通常在程序的顶部。全局变量在程序的整个生命周期中保持其值,并且可以在程序定义的任何函数内部访问。
任何函数都可以访问全局变量。也就是说,全局变量在声明后,整个程序中都可以使用。下面的示例同时使用了全局变量和局部变量 –
执行上述代码时,将产生以下结果:
一个程序可以在局部变量和全局变量中使用相同的名称,但是函数内部的局部变量的值优先。例如:
当上面的代码编译并执行时,会产生以下结果 –
形式参数
形式参数在该函数内被视为局部变量,并且它们优先于全局变量。例如:
当以上代码被编译和执行时,生成以下结果−
初始化局部和全局变量
局部和全局变量被初始化为默认值,其值为0;而指针被初始化为nil。
Data Type | Initial Default Value |
---|---|
int | 0 |
float32 | 0 |
pointer | nil |