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