为什么我无法访问 Go 中条件语句内声明的变量?
Nov 09, 2024 pm 06:19 PM在条件语句内声明的变量
您遇到了一个问题,即条件语句(if...else)中声明的变量没有被执行认可。这是因为 Go 中的变量具有特定的作用域,该作用域由声明它们的块定义。
变量作用域
在您的示例中,您声明req 和 er 在条件语句的分支内。然而,这意味着这些变量仅在那些特定分支中可见。 Go 要求您在打算使用变量的范围内声明变量。
解决方案
要解决此问题,请在条件语句之外声明 req 和 er,以便它们在整个函数中都是可见的:
var req *http.Request var er error if strings.EqualFold(r.Method, "GET") || strings.EqualFold(r.Method, "") { req, er = http.NewRequest(r.Method, r.Uri, b) } else { req, er = http.NewRequest(r.Method, r.Uri, b) } if er != nil { // we couldn't parse the URL. return nil, &Error{Err: er} } // add headers to the request req.Host = r.Host req.Header.Add("User-Agent", r.UserAgent) req.Header.Add("Content-Type", r.ContentType) req.Header.Add("Accept", r.Accept) if r.headers != nil { for _, header := range r.headers { req.Header.Add(header.name, header.value) } }
登录后复制
理解语法
Go 中 = 和 := 之间的区别很重要。 = 用于为现有变量赋值,而 := 用于在同一行中声明和赋值变量。
这意味着如果您使用 = 声明变量,则必须已经声明过它在同一作用域或父作用域中,而 := 在单个语句中声明并初始化变量。
在这种情况下,因为您想在函数内引入新变量,所以 :=是要使用的适当语法。
以上是为什么我无法访问 Go 中条件语句内声明的变量?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)