hi, I do not seem to to get this one to not panic, and do not understand why yet.
This code gets the names of files using shell globbing , so go run testchannels.go dir/* This gets the name and size info of all 1000 files in the dire, but panics at the end with a deadlock: fatal error: all goroutines are asleep - deadlock! goroutine 1 [select]: main.run({0xc000118018, 0x3e8, 0x57f308?}) /pathtestchannels.go:44 +0x278 main.main() /path/testchannels.go:15 +0x66 exit status 2 I do not seem to be able to find my mistake. Any hints appreciated ;-). package main import ( "flag" "fmt" "os" "sync" ) func main() { flag.Parse() files := flag.Args() run(files) } func run(files []string) { errCh := make(chan error, 10) resCh := make(chan string, 10) doneCh := make(chan struct{}) wg := sync.WaitGroup{} for _, file := range files { wg.Add(1) go func(file string) { defer wg.Done() f, err := os.Stat(file) if err != nil { errCh <- fmt.Errorf("could not stat %s: %w\n", file, err) } resCh <- fmt.Sprintf("name: %s\t size: %d", f.Name(), f.Size()) }(file) } go func() { wg.Wait() close(doneCh) }() for { select { case err := <-errCh: fmt.Println(err) case data := <-resCh: fmt.Println("from result channel: ", data) } } } regards, Natxo -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/49fb8d6d-9db7-4f62-ab34-8eefdb6e8ad9n%40googlegroups.com.