任何编程中的作用域是程序中可以存在定义的变量并且不能访问该变量的区域,在三个地方可以使用Go编程语言声明变量-

  • 在函数或块内( local 变量)

    无涯教程网

  • 所有函数之外( global变量)

  • 在函数参数中( formal参数)

让我们找出什么是 local 和 global 变量以及什么是 formal 参数。

链接:https://www.learnfk.com/article-go/go_scope_rules

来源:LearnFk无涯教程网

局部变量

在函数或块内声明的变量称为局部变量,它们只能由该函数或代码块中的语句使用,以下示例使用局部变量。在这里,所有变量a,b和c都是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)
}

编译并执行上述代码后,将产生以下输出-

value of a=10, b=20 and c=30

全局变量

全局变量是在函数外部定义的,通常在程序顶部,全局变量在程序的整个生命周期中都保持其值,并且可以在为该程序定义的任何函数中访问它们。

全局变量可以由任何函数访问,也就是说,在声明之后,全局变量可在整个程序中使用。以下示例同时使用全局变量和局部变量-

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)
}

编译并执行上述代码后,将产生以下输出-

value of a=10, b=20 and g=30

程序的局部变量和全局变量可以具有相同的名称,但是函数内局部变量的值优先。如-

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)
}

编译并执行上述代码后,将产生以下输出-

value of g=10

参数变量

Formal参数在该函数中被视为局部变量,并且它们优先于全局变量。如-

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;
}

编译并执行上述代码后,将产生以下输出-

value of a in main()=10
value of a in sum()=10
value of b in sum()=20
value of c in main()=30

初始化变量

局部变量和全局变量被初始化为其默认值0。而指针初始化为nil。

数据类型初始默认值
int 0
float32 0
pointer nil

这一章你学到了什么?来做个笔记,好记忆不如烂笔头! 如果觉得对您有帮助,麻烦帮分享给您的朋友。

祝学习愉快! (如果觉得不正确,选中要修改的内容->右键->编辑)

点我分享笔记