• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go的变量作用域

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。

Go 语言中变量可以在三个地方声明:

  1. 函数内部定义的变量称为局部变量
  2. 函数外部定义的变量称为全局变量
  3. 函数定义中传的变量称为形式参数

 

局部变量

在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。

栗子~

 

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 func plus() int{
 8     //声明并初始化局部变量num1,num2
 9     num1 := 10
10     num2 := 20
11     sum := num1 + num2
12     //和作为返回值返回
13     return sum
14 }
15 
16 func main(){
17     //调用plus函数并输出返回的结果
18     fmt.Println(plus())
19     /*这个执行会报错undefined: num1,因为这个num1的作用域在plus函数内,所以main函数是无法调用的
20     fmt.Println(num1)
21     */
22 }

 

 

全局变量

在函数体外声明的变量称之为全局变量,全局变量可以在整个包甚至外部包(被导出后)使用。

全局变量可以在任何函数中使用,以下实例演示了如何使用全局变量:

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 var (
 8     //定义全局变量num1,numu2
 9     num1 int = 10
10     num2 int = 20
11 )
12 func plus() int {
13     fmt.Println("plus函数内部调用num1:", num1)
14     fmt.Println("plus函数内部调用num2:", num2)
15     sum := num1 + num2
16     //和作为返回值返回
17     return sum
18 }
19 
20 func main(){
21     fmt.Println("plus函数返回的结果为:",plus())
22     fmt.Println("------------------------")
23     fmt.Println("main函数中调用num1:",num1)
24     fmt.Println("main函数中调用num2:",num2)
25 }

以上代码输出的返回结果为:

plus函数内部调用num1: 10
plus函数内部调用num2: 20
plus函数返回的结果为: 30
------------------------
main函数中调用num1: 10
main函数中调用num2: 20

 

Go 语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑。实例如下:

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 var (
 8     //定义全局变量num1,numu2
 9     num1 int = 10
10     num2 int = 20
11 )
12 func plus() int {
13     //内部的局部变量num1作用域要高于外部的num1.计算的时候会使用局部变量计算
14     num1 := 50
15     fmt.Println("plus函数内部调用num1:", num1)
16     fmt.Println("plus函数内部调用num2:", num2)
17     sum := num1 + num2
18     //和作为返回值返回
19     return sum
20 }
21 
22 func main(){
23     fmt.Println("plus函数返回的结果为:",plus())
24     fmt.Println("------------------------")
25     fmt.Println("main函数中调用num1:",num1)
26     fmt.Println("main函数中调用num2:",num2)
27 }

以上代码输出的返回结果为:

plus函数内部调用num1: 50
plus函数内部调用num2: 20
plus函数返回的结果为: 70
------------------------
main函数中调用num1: 10
main函数中调用num2: 20

 

形式参数

形式参数会作为函数的局部变量来使用。实例如下:

 1 package main
 2 
 3 import (
 4     "fmt"
 5 )
 6 
 7 //声明全局变量a
 8 var a int = 20
 9 
10 func main(){
11     //局部变量
12     var a int = 10
13     var b int = 20
14     var c int =  0
15 
16     fmt.Println("main函数中的a值:", a)
17     c = plus(a, b)
18     fmt.Println("main函数中的c值:", c)
19 
20 }
21 
22 func plus(a, b int) int {
23     //形参a,b的值来自于main函数中的局部变量的a,b两个赋值
24     fmt.Println("plus函数内部的a值:", a)
25     fmt.Println("plus函数内部的b值:", b)
26     return a + b
27 }

以上代码输出的返回结果为:

main函数中的a值: 10
plus函数内部的a值: 10
plus函数内部的b值: 20
main函数中的c值: 30

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言实战-我需要站内搜索发布时间:2022-07-10
下一篇:
go语言学习杂记发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap