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)
}
}