Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 戈朗开关可变范围_Variables_Go_Scope_Switch Statement - Fatal编程技术网

Variables 戈朗开关可变范围

Variables 戈朗开关可变范围,variables,go,scope,switch-statement,Variables,Go,Scope,Switch Statement,我试图找出Golang中的简单开关,我被变量作用域卡住了 var body string var errs error req := gorequest.New() var resp gorequest.Response switch verb { case 0: resp, body, errs := req.Get(suburl). Set("X-Auth-Token", d.Token). Set("Content-type", "applicati

我试图找出Golang中的简单开关,我被变量作用域卡住了

var body string
var errs error
req := gorequest.New()
var resp gorequest.Response
switch verb {
case 0:
    resp, body, errs := req.Get(suburl).
        Set("X-Auth-Token", d.Token).
        Set("Content-type", "application/json").
        End()
}
if errs != nil {
    return &ConnResponse{resp.StatusCode, body, fmt.Errorf("%s", errs)}
}
我在切换之前声明了resp、body、errs和req,我认为它们在切换body之后可用。 编译器返回的内容如下:案例声明中的错误

# command-line-arguments
./conn.go:135:3: resp declared and not used
./conn.go:135:9: body declared and not used
./conn.go:135:15: errs declared and not used

所以我很好奇开关体内的变量作用域是否与函数中声明的不同?在切换主体之后,这段代码将如何访问数据。

您的问题在这一行:

resp, body, errs := req.Get(suburl)
短变量声明运算符:=创建新变量并为其赋值。这些新变量被称为在外部作用域中创建的变量的阴影,因为它们具有相同的名称,因此它们从该作用域中隐藏外部作用域变量。要解决此问题,只需将值从外部范围分配给现有变量,而不是创建新变量:

resp, body, errs = req.Get(suburl)

注意这里使用assignment=而不是short declaration:=。

您的问题在这一行:

resp, body, errs := req.Get(suburl)
短变量声明运算符:=创建新变量并为其赋值。这些新变量被称为在外部作用域中创建的变量的阴影,因为它们具有相同的名称,因此它们从该作用域中隐藏外部作用域变量。要解决此问题,只需将值从外部范围分配给现有变量,而不是创建新变量:

resp, body, errs = req.Get(suburl)

注意这里使用assignment=代替简短声明:=。

:=应该=。重复的:=应该=。重复的是,这就是问题所在。我一开始没有注意到这一点。谢谢你的帮助是的,这就是问题所在。我一开始没有注意到这一点。谢谢你的帮助