gpt4 book ai didi

go - 填充缓冲 channel 直到变满或持续时间过去

转载 作者:数据小太阳 更新时间:2023-10-29 03:16:32 25 4
gpt4 key购买 nike

我有一个缓冲的 chan string,我一直用随机字符串填充它直到 time.Duration 过去或直到它变满。

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

这是我目前的做法

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
}
}

}

最佳答案

我不是 Go 专家(事实上,我从未使用过它),但文档建议 Timer , 或 After对于单个事件。

select {
case <-time.After(1*time.Nanosecond):
return c
case c <- "Random message":
default:
return c
}

关于go - 填充缓冲 channel 直到变满或持续时间过去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32666182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com