第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在 go 中復(fù)制 do?

如何在 go 中復(fù)制 do?

Go
汪汪一只貓 2021-11-08 19:01:25
我希望執(zhí)行一組代碼,直到用戶明確想要退出該函數(shù)。例如:當(dāng)用戶運(yùn)行程序時(shí),他會(huì)看到 2 個(gè)選項(xiàng):再次運(yùn)行出口這將使用 switch case 結(jié)構(gòu)來實(shí)現(xiàn)。這里如果用戶按下 1,與 1 相關(guān)聯(lián)的一組功能將執(zhí)行,如果用戶按下 2,程序?qū)⑼顺?。我?yīng)該如何在 golang 中實(shí)現(xiàn)這個(gè)場景?在 java 中,我相信這可以使用 do while 結(jié)構(gòu)來完成,但 go 不支持 do while 循環(huán)。以下是我嘗試過的代碼,但這是一個(gè)無限循環(huán):func sample() {    var i = 1    for i > 0 {        fmt.Println("Press 1 to run")        fmt.Println("Press 2 to exit")        var input string        inpt, _ := fmt.Scanln(&input)        switch inpt {        case 1:            fmt.Println("hi")        case 2:            os.Exit(2)        default:            fmt.Println("def")        }    }}無論輸入如何,程序都只打印“hi”。有人可以糾正我在這里做錯(cuò)了什么嗎?謝謝。
查看完整描述

3 回答

?
aluckdog

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)。


查看完整回答
反對 回復(fù) 2021-11-08
?
月關(guā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。


查看完整回答
反對 回復(fù) 2021-11-08
?
呼如林

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

        }

    }

}


查看完整回答
反對 回復(fù) 2021-11-08
  • 3 回答
  • 0 關(guān)注
  • 195 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)