commit 3f5c4613d3a7f068570c57f1add8531c577b3377 Author: lukastriescoding Date: Wed Nov 29 20:04:31 2023 +0100 test diff --git a/test.go b/test.go new file mode 100644 index 0000000..f753fdf --- /dev/null +++ b/test.go @@ -0,0 +1,55 @@ +package main + +import ( + "fmt" + "log" + "os" + "sync" + "time" +) + +func sendA(ch chan string) { + fmt.Println("start waiting A") + time.Sleep(20 * time.Second) + fmt.Println("end waiting A") + ch <- "a" + close(ch) +} + +func sendB(ch chan string) { + fmt.Println("start waiting B") + time.Sleep(10 * time.Second) + fmt.Println("end waiting B") + ch <- "b" + close(ch) +} + +func main() { + if err := os.Chdir(""); err != nil { + fmt.Println("didn't change directory") + } + wg := sync.WaitGroup{} + wg.Add(2) + chA := make(chan string) + chB := make(chan string) + fmt.Println("start sendA") + go sendA(chA) + fmt.Println("start sendB") + go sendB(chB) + fmt.Println("start printing A") + go printCock(chA, &wg) + fmt.Println("start printing B") + go printCock(chB, &wg) + wg.Wait() +} + +func printCock(ch chan string, wg *sync.WaitGroup) { + for { + select { + case x := <-ch: + log.Println(x) + wg.Done() + return + } + } +}