簡體   English   中英

如何運行函數,直到返回期望值?

[英]How do I run a function until the expected value is returned?

我想運行一個函數,直到它返回0。

value, _ := FuncX()

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

似乎是一種非常丑陋的方式。 有什么更好的辦法?

盡管循環主體中沒有任何內容,可能會觸發編碼器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則只需預先聲明它們,然后將:=替換為=

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

您可以使用如下循環:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM