From bdd898be699426ee261a24d056cbf6a0971f696f Mon Sep 17 00:00:00 2001 From: oscarzhou Date: Sun, 25 Apr 2021 22:52:57 +1200 Subject: [PATCH] basics: use two channels to control the workflow. --- basics/main.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 basics/main.go diff --git a/basics/main.go b/basics/main.go new file mode 100644 index 0000000..efc3905 --- /dev/null +++ b/basics/main.go @@ -0,0 +1,45 @@ +package main + +import "fmt" + +func walk(ch1, ch2 chan int) { + fmt.Println("walk") + + fmt.Println("1") + ch1 <- 2 + + fmt.Println("2") + y := <-ch2 + fmt.Println("y=", y) + + fmt.Println("3") +} + +func loadWorker(ch1, ch2 chan int) { + fmt.Println("loadWorker") + + fmt.Println("4") + select { + case x := <-ch1: + fmt.Println("x=", x) + fmt.Println("5") + + select { + case ch2 <- x + 5: + fmt.Println("6") + } + } + fmt.Println("7") + +} + +func main() { + ch1 := make(chan int) + ch2 := make(chan int) + + go loadWorker(ch1, ch2) + + walk(ch1, ch2) + + fmt.Println("Done") +}