funcgoroutineA(a chanint) { data := 3 a <- data fmt.Println("goroutine A Send data: ", data)
receivedData, ok := <-a if ok { fmt.Println("goroutine A received data: ", receivedData) }
close(a)
}
funcgoroutineB(b chanint) { data := 1 val, ok := <-b if ok { fmt.Println("goroutine B received data: ", val) } b <- data fmt.Println("goroutine B sent data: ", data) return }
funcmain() { ch := make(chanint) go goroutineA(ch) go goroutineB(ch)
funcgoroutineA(a chanint) { data := 3 select { case a <- data: fmt.Println("goroutine A sent data: ", data) case receivedData, ok := <-a: if ok { fmt.Println("goroutine A received data: ", receivedData) } }
close(a) }
funcgoroutineB(b chanint) { data := 1 select { case val, ok := <-b: if ok { fmt.Println("goroutine B received data: ", val) } case b <- data: fmt.Println("goroutine B sent data: ", data) }
return }
funcmain() { ch := make(chanint) go goroutineA(ch) go goroutineB(ch)