【发布时间】:2013-11-15 20:00:58
【问题描述】:
我在理解 golang 中的频道时遇到了一些问题。据我所知,通道是在给定时间间隔内将数据发布到控制台的正确方式。
假设我有一个正在工作的 goroutine,然后在我的主循环中我想每秒打印来自该 goroutine 的数据。
如何编码这样的东西?一个简单的例子将不胜感激。
【问题讨论】:
-
任何 goroutine 都可以随时
fmt.Println。不需要通道,尽管您可以使用它们来确保两个 goroutine 不会同时写入。如果您想使用通道每秒中断一次 goroutine,通道写入实际上不会中断任何内容;您必须使用select来检查来自time.Tick或其他的消息。因此,我认为我们需要更多地了解您的代码目前的样子,以及您目前无法执行的打印定期更新的哪些方面才能回答。 -
记住
log包提供了Logger接口。 “一个 Logger 可以在多个 goroutines 中同时使用;它保证对 Writer 的序列化访问。” golang.org/pkg/log/#Logger
标签: go