猿问

填充一个缓冲的 chan 直到填满或一段时间过去

我有一个chan string缓冲的,我一直用随机字符串填充它,直到一段时间。持续时间过去或直到它变满。


我的问题是,考虑到它是一次性任务还是有更方便的方法,我应该使用自动收报机吗?


这是我目前的做法


package main


import (

    "fmt"

    "time"

)


func main() {

    res := fillChan(time.Duration(1*time.Nanosecond), 100000)

    fmt.Println(len(res))

}


func fillChan(maxDuration time.Duration, chanSize int) chan string {

    c := make(chan string, chanSize)


    ticker := time.NewTicker(maxDuration)


    for {

        select {

        case <-ticker.C:

            ticker.Stop()

            return c

        case c <- "Random message":

        default:

            return c

        }

    }


}


喵喔喔
浏览 162回答 1
1回答

白衣非少年

我不是围棋专家(事实上,我从未使用过它),但文档建议Timer,或After用于单个事件。select {case <-time.After(1*time.Nanosecond):&nbsp; &nbsp; return ccase c <- "Random message":default:&nbsp; &nbsp; return c}
随时随地看视频慕课网APP

相关分类

Go
我要回答