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, "文章类型异常", "")}

// 正确 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 这些控制结构,而在这些结构中声明的变量的作用域只在相应的代码块内。
一般情况下,局部变量的作用域可以通过代码块(用大括号括起来的部分)判断。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
