channel是Map的返回值
由于Map是个并发操作,如果不用range或drain的方式,那么在使用返回值的时候,可能Map里面的代码还在读写这个返回值,可能导致数据不全或者concurrent read write错误
如果需要收集Map生成的结果,那么使用如下方式
for v := range channel {
// v is with type interface{}
}
如果不需要收集结果,那么就需要显式的调用mapreduce.Drain,如
mapreduce.Drain(channel)
nil, false
nil, false