2014-10-01 39 views
0

我想运行一个函数,直到它返回0如何在预期值返回之前运行函数?

value, _ := FuncX() 

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

似乎是一个非常丑陋的方式去做。什么是更好的方法?

回答

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

@tommywild - 是的,但你总是可以使用闭包/函数变量来减少任何具有零参数的函数。 – LinearZoetrope 2014-10-02 07:16:12

0

您可以使用像一个循环:

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

比别人更复杂的循环头已经提供,虽然一无所有循环体可能会引发强迫症编码器。

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. 
} 

读取文件一行一行如果您需要lineerr你只是预先声明他们与=更换:=外循环。

相关问题