golang if 声明变量作用域

变量作用域

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

一个变量(常量、类型或函数)在程序中都有一定的作用范围,称之为作用域。如果一个变量在函数体外声明,则被认为是全局变量,可以在整个包甚至外部包(被导出后)使用,不管你声明在哪个源文件里或在哪个源文件里调用该变量。可参考 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 这些控制结构,而在这些结构中声明的变量的作用域只在相应的代码块内。

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部