如何在返回预期值之前运行函数?

时间:2014-10-01 20:58:43

标签: go

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

value, _ := FuncX()

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

似乎是一种非常难看的方式。什么是更好的方式?

3 个答案:

答案 0 :(得分:1)

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

for value,_ := FuncX(); value != 0; value,_ = FuncX() {
}

实际上,这通常是我在Go

中逐行读取文件的方式
// 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.
}

如果您在循环外需要lineerr,则只需预先声明它们并将:=替换为=

答案 1 :(得分:0)

for {
    value, _ := FuncX()
    if value == 0 {
        break
    }
}

答案 2 :(得分:0)

您可以使用如下循环:

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