我循环遍历状态变化,其中变化和条件在函数中定义,并希望编写一个 for 语句,其中我只声明函数调用一次。
此代码有效,但重复 message, flag = a.foo()
感觉很乱。当初始语句与 post 语句相同时,是否有更有效的方法来编写 for 循环?
func (a *Example) foo() (string, bool) {
// Function affects state of a
// returns message on each step and flag if condition reached
}
func main() {
// Step through each state change until flag is triggered
for message, flag := a.foo(); flag; message, flag = a.foo() {
fmt.Printf("%s\n", message)
}
}
我希望有某种等价物可以很好地适合这样的 if 语句:
if message, flag := a.foo(); !flag {
fmt.Printf("%s\n", message)
}
事实上,我更希望我可以将它更改为 for,但是,唉,预期为“;”。找到'{'
我可能问得太多了,但如果有答案,我很乐意听到。谢谢
最佳答案
据我所知,没有办法完全按照您的意愿去做(尽管如果可能的话我也很乐意)。您可以使用“无限”循环并手动编写中断条件,尽管这也不太好,例如:
func main() {
for {
msg, flag := a.foo()
if flag {
break
}
fmt.Printf(...)
}
}
关于go - 在 Go 中重复函数调用的 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23311300/