作者carylorrk (Cary)
看板Programming
标题[问题] Golang iterate callback
时间Wed Oct 8 18:56:55 2014
目前在练习用 golang 实作一些东西
里面写到可以让使用者自定一个 combiner 把 callbacks 结果做处理
一开始我先把所有 callback 都跑一遍,然後把所有结果用 slice 包起来传给 combiner
http://ideone.com/dRYZDb
但是我希望在 combiner 里每次拿下一个结果的时候才计算(呼叫 callback)
C++ 可以自定 iterator, 在 golang 想到用 channel 达到类似功能的做法
http://ideone.com/YwgBm4
这样的界面对使用者最方便,combine 里可以直接 iterate result
但是会有两个问题:
1. 每次会先做完下一个, send to channel 时才卡住,我希望的是如果没有读就不要做
2. combiner 中途离开时没有办法很好的关闭 goroutine...
虽然可以直接关掉 channel 然後做 recover,但是感觉很不好XD
目前我想到的方法是把 callback wrap 起来给 combiner 呼叫
http://ideone.com/tQ7mbu
不过这样 combiner 里需要使用者自己呼叫才能得到结果
不知道有没有更好的处理方式?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.34.244.41
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Programming/M.1412765820.A.B8B.html
1F:→ carylorrk: 是没有人在用 go,还是我的问题太蠢orz 1.34.244.41 10/10 18:01