golang if 声明变量作用域


一个变量(常量、类型或函数)在程序中都有一定的作用范围,称之为作用域。如果一个变量在函数体外声明,则被认为是全局变量,可以在整个包甚至外部包(被导出后)使用,不管你声明在哪个源文件里或在哪个源文件里调用该变量。可参考 GO语言变量作用域

变量定义

一个变量(常量、类型或函数)在程序中都有一定的作用范围,称之为作用域。如果一个变量在函数体外声明,则被认为是全局变量,可以在整个包甚至外部包(被导出后)使用,不管你声明在哪个源文件里或在哪个源文件里调用该变量。

if 和 for 声明变量作用域

在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。在今后的学习中我们将会学习到像 if 和 for 这些控制结构,而在这些结构中声明的变量的作用域只在相应的代码块内。一般情况下,局部变量的作用域可以通过代码块(用大括号括起来的部分)判断。

看代码:

	// 错误 menu_web_id 变量定义代码
	
	if menu_web_id, err := c.GetInt("MenuWebId", 0);err != nil || menu_web_id < 1 {
		c.JsonResult(enums.JRCodeFailed, "文章类型异常", "")
	}
	
	// 该处使用的 menu_web_id 是未定义的;if 代码块中声明定义变量作用域只在 if 语句中
	if m.MenuWeb, err = models.MenuWebOne(menu_web_id); err != nil {
		c.JsonResult(enums.JRCodeFailed, "文章类型异常", "")
	}

if代码声明变量在外部使用显示的异常

	// 正确 menu_web_id 变量定义代码
	
	menu_web_id, err := c.GetInt("MenuWebId", 0);
	if err != nil || menu_web_id < 1 {
		c.JsonResult(enums.JRCodeFailed, "文章类型异常", "")
	}
	if m.MenuWeb, err = models.MenuWebOne(menu_web_id); err != nil {
		c.JsonResult(enums.JRCodeFailed, "文章类型异常", "")
	}

纠其原因就是:

if 和 for 这些控制结构,而在这些结构中声明的变量的作用域只在相应的代码块内。

一般情况下,局部变量的作用域可以通过代码块(用大括号括起来的部分)判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值