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
Go 如何运行函数直到返回预期值?_Go - Fatal编程技术网

Go 如何运行函数直到返回预期值?

Go 如何运行函数直到返回预期值?,go,Go,我想运行一个函数,直到它返回0 value, _ := FuncX() if value != 0 { value, _ := FuncX() if(value != 0) { value, _ := FuncX() if(value != 0) .... } } 这似乎是一种非常丑陋的方式。有什

我想运行一个函数,直到它返回0

value, _ := FuncX()

if value != 0 {
                    value, _ := FuncX()
                  if(value != 0) {
                     value, _ := FuncX()
                      if(value != 0) ....
                  }
}

这似乎是一种非常丑陋的方式。有什么更好的方法吗?

您可以使用如下循环:

for {
    value, _ := FuncX()
    if value == 0 {
        break
    }
}
value, _ := FuncX()
for value == 0 {
    value, _ = FuncX() // note using the = not :=
}

一个比其他人提供的更复杂的循环头,尽管在循环体中没有任何内容可能会触发编码器OCD

for value,_ := FuncX(); value != 0; value,_ = FuncX() {
}
事实上,这通常是我在围棋中逐行读取文件的方式

// Assume we have some bufio.Reader named buf already created
for line,err := buf.ReadString('\n'); err == nil; line,err = buf.ReadString('\n') {
    // Do stuff with the line.
}
如果您需要
line
err
在循环之外,您只需预先取消它们,并将
:=
替换为
=