go 新人请教大佬一个关闭 channel 的问题,发送端逻辑是历遍一堆目录,把里面的文件发送到 chan ,递归方式实现。这里的 chan 关闭有什么方法。
目前这个代码跑起来的问题是会一直阻塞,要手动关闭
func main() {
var wg sync.WaitGroup
objchan := make(chan []string, 10)
wg.Add(1)
go func(och <-chan []string) {
defer wg.Done()
for objs := range och {
do_something(objs)
}
}(objchan)
for _, perfix := range []string{"test", "tc"} {
go Getfile(perfix, objchan)
}
wg.Wait()
}
func Getfile(dir string, filechan chan<- []string) {
// send files
...
filechan <- files
// 子目录递归
if dir {
go Getfile(dir, filechan)
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.