在if..else语句中未声明变量
我刚刚开始学习go lang,而对于在go lang中声明变量感到困惑
例如我已经声明req
,er
里面if … else语句。
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)
}
}
但是终端出现错误
./goreq.go:127: req declared and not used./goreq.go:127: er declared and not used
./goreq.go:129: req declared and not used
./goreq.go:129: er declared and not used
好像我在If语句中声明的任何内容都不起作用…我该如何解决?
回答:
因为变量仅在声明它们的范围内定义:
package mainimport "fmt"
func main() {
a := 1
fmt.Println(a)
{
a := 2
fmt.Println(a)
}
fmt.Println(a)
}
去玩
之间的区别=
,并:=
是=
仅仅是分配和:=
对变量的声明和分配新建分配FY语法
这个:
a := 1
等效于:
var a inta = 1
您可能想要的是:
var req *http.Requestvar 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)
}
}
以上是 在if..else语句中未声明变量 的全部内容, 来源链接: utcz.com/qa/400992.html