golang 这里有人用吗
居然没有内置这种功能。。。
想到个办法,在此抛砖引玉
刚试着弄了个,思路是制造一个链式的结构,
链上的每个元素对应一个 goroutine ,这个 goroutine
读取上一个节点发过来的数据扔到输出 channel 上,并转发给下一个。
输出 channel 阻塞就退出自己。(所以发送必须比接收慢)
而且链上有多少个节点,相当于多少容量的 buffer ,
无法确认消息送达到全部 channel
type chaincast struct {
v interface{} //message payload.
out chan interface{} //message output channel
spawn chan<- chaincast //send to this channel to spawn goroutine for chain element.
next chan chaincast //channel for passing message to next
prev chan chaincast //channel for receiving message from prev
}
代码在这,可能有大 bug :
https://play.golang.org/p/6D9wZ9Qnp8
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/337503
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.