[问题] Golang iterate callback

楼主: carylorrk (carylorrk)   2014-10-08 18:56:55
目前在练习用 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 里需要使用者自己呼叫才能得到结果
不知道有没有更好的处理方式?

Links booklink

Contact Us: admin [ a t ] ucptt.com