所以我很新去!但是我对我想尝试的事情有这个想法。
我想要一个从通道接受字符串的 go 例程,但只有在它收到 N 个字符串后才应该对它们执行。
我四处寻找类似的问题或案例,但我只发现了一些想法是并行执行多个例程并等待汇总结果。
我想到了创建一个数组并将其传递给长度足够的例程的想法。但是我想保持一定的关注点分离并在接收端控制它。
我的问题是。
这是出于某种原因的不良做法吗?
有没有更好的方法来做到这一点,它是什么?
func main() {
ch := make(chan string)
go func() {
tasks := []string{}
for {
tasks = append(tasks,<- ch)
if len(tasks) < 3 {
fmt.Println("Queue still to small")
}
if len(tasks) > 3 {
for i := 0; i < len(tasks); i++ {
fmt.Println(tasks[i])
}
}
}
}()
ch <- "Msg 1"
time.Sleep(time.Second)
ch <- "Msg 2"
time.Sleep(time.Second)
ch <- "Msg 3"
time.Sleep(time.Second)
ch <- "Msg 4"
time.Sleep(time.Second)
}
编辑更简单更准确的例子。
慕娘9325324
萧十郎
相关分类