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

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

跳出選擇循環(huán)?

跳出選擇循環(huán)?

Go
皈依舞 2021-08-10 17:11:57
我正在嘗試使用select循環(huán)來接收消息或超時(shí)信號(hào)。如果收到超時(shí)信號(hào),循環(huán)應(yīng)該中止:package mainimport ("fmt"; "time")func main() {    done := time.After(1*time.Millisecond)    numbers := make(chan int)    go func() {for n:=0;; {numbers <- n; n++}}()    for {        select {            case <-done:                break            case num := <- numbers:                fmt.Println(num)        }    }}然而,它似乎并沒有停止:$ go run a.go01234567891011121314151617181920212223242526272829303132[...]38243825[...]為什么?我用time.After錯(cuò)了嗎?
查看完整描述

3 回答

?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊

Go規(guī)范說

“break”語句終止同一函數(shù)內(nèi)最里面的“for”、“switch”或“select”語句的執(zhí)行。

在您的示例中,您只是脫離了 select 語句。如果您替換break為一條return語句,您將看到它正在運(yùn)行。


查看完整回答
反對(duì) 回復(fù) 2021-08-10
?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

在您的示例代碼中, areturn似乎像 Pat 所說的那樣合適,但為了將來參考,您可以使用標(biāo)簽:


package main


import (

    "fmt"

    "time"

)


func main() {

    done := time.After(1 * time.Millisecond)

    numbers := make(chan int)


    // Send to channel

    go func() {

        for n := 0; ; {

            numbers <- n

            n++

        }

    }()


readChannel:

    for {

        select {

        case <-done:

            break readChannel

        case num := <-numbers:

            fmt.Println(num)

        }

    }


    // Additional logic...

    fmt.Println("Howdy")

}


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

添加回答

舉報(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)