我想运行一个函数,直到它返回0.
value, _ := FuncX()
if value != 0 {
value, _ := FuncX()
if(value != 0) {
value, _ := FuncX()
if(value != 0) ....
}
}
似乎是一种非常难看的方式。什么是更好的方式?
答案 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.
}
如果您在循环外需要line
或err
,则只需预先声明它们并将:=
替换为=
。
答案 1 :(得分:0)
for {
value, _ := FuncX()
if value == 0 {
break
}
}
答案 2 :(得分:0)
您可以使用如下循环:
value, _ := FuncX()
for value == 0 {
value, _ = FuncX() // note using the = not :=
}