nci*_*iao 0 variables scope function go
我有一个GoLang函数,试图在FOR循环中设置一些命名的返回变量.它看起来像这样:
func (dbs *myClient) DoStuff() (response []byte, e error) {
for i:=0;i<5;i+=1 {
response, e = dbs.doNetworkThing()
if e == nil {
break;
}
}
return response, e
}
Run Code Online (Sandbox Code Playgroud)
基本上我想要做的是设置返回变量response
和e
doNetworkThing()的第一个结果,它不会失败.
问题是,一旦我退出for循环response
,e
就会重置.在GoLang做这样的事情的正确方法是什么?
我真的想使用命名的返回变量,因为它们使事情更容易阅读(我认为这样的事情是一个丑陋的解决方案).
// Seems to be an ugly solution - would prefer using named return vars
func (dbs *myClient) DoStuff() ([]byte, error) {
var response []byte
var e error
for i:=0;i<5;i+=1 {
response, e := dbs.doNetworkThing()
if e == nil {
break;
}
}
return response, e
}
Run Code Online (Sandbox Code Playgroud)
下面的代码似乎工作(编译).在这里测试.
func (dbs *myClient) DoStuff() (response []byte, e error) {
for i:=0;i<5;i+=1 {
response, e = dbs.doNetworkThing()
if e == nil {
break;
}
}
return
}
Run Code Online (Sandbox Code Playgroud)
我做了什么:
response
和e
声明,因为它已经在您命名返回值时已经声明了.:=
,=
因为(再次)变量已经被声明return response, e
到return
因为返回值被命名为希望能帮助到你!:)
归档时间: |
|
查看次数: |
79 次 |
最近记录: |