我想运行一个函数,直到它返回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 :=
}
比别人更复杂的循环头已经提供,虽然一无所有循环体可能会引发强迫症编码器。
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
你只是预先声明他们与=
更换:=
外循环。
@tommywild - 是的,但你总是可以使用闭包/函数变量来减少任何具有零参数的函数。 – LinearZoetrope 2014-10-02 07:16:12