3 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
Ado..while可以更直接地在 Go 中使用 for 循環(huán)進(jìn)行模擬,該循環(huán)使用以 為bool種子的循環(huán)變量true。
for ok := true; ok; ok = EXPR { }
或多或少直接等價(jià)于
do { } while(EXPR)
所以在你的情況下:
var input int
for ok := true; ok; ok = (input != 2) {
n, err := fmt.Scanln(&input)
if n < 1 || err != nil {
fmt.Println("invalid input")
break
}
switch input {
case 1:
fmt.Println("hi")
case 2:
// Do nothing (we want to exit the loop)
// In a real program this could be cleanup
default:
fmt.Println("def")
}
}
編輯:游樂場(帶有虛擬的標(biāo)準(zhǔn)輸入)
雖然,不可否認(rèn),在這種情況下,它可能是更清晰的整體,只是顯式調(diào)用(標(biāo)記)break,return或os.Exit在循環(huán)。

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
當(dāng)提出這個(gè)問題時(shí),這是針對這種特定情況的更好答案(我?guī)缀醪恢涝?Google 搜索“do while loop golang”時(shí)這會(huì)是排名第一的結(jié)果)。
將您的函數(shù)包裝在 for 循環(huán)中:
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("Press 1 to run")
fmt.Println("Press 2 to exit")
for {
sample()
}
}
func sample() {
var input int
n, err := fmt.Scanln(&input)
if n < 1 || err != nil {
fmt.Println("invalid input")
return
}
switch input {
case 1:
fmt.Println("hi")
case 2:
os.Exit(2)
default:
fmt.Println("def")
}
}
甲for沒有任何聲明循環(huán)相當(dāng)于while在其他類似C語言的循環(huán)。查看涵蓋循環(huán)的Effective Go 文檔for。

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊
do...while in go 可以是這樣的:
func main() {
var value int
for {
value++
fmt.Println(value)
if value%6 != 0 {
break
}
}
}
- 3 回答
- 0 關(guān)注
- 195 瀏覽
添加回答
舉報(bào)