我有一个chan string缓冲的,我一直用随机字符串填充它,直到time.Duration过去或直到它变满为止。
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 } } }
我不是Go方面的专家(实际上,我从未使用过它),但是文档建议Timer或仅After针对单个事件。
Timer
After
select { case <-time.After(1*time.Nanosecond): return c case c <- "Random message": default: return c }