BTW, using time.Sleep() to keep goroutines running is poor practice. What I suggest is using a sync.WaitGroup. Call wg.Add(1) for each goroutine you start; call wg.Done() when each goroutine ends; and call wg.Wait() to wait for them. https://go.dev/play/p/INl7BxG0ZSU
On Wednesday, 27 July 2022 at 08:30:53 UTC+1 Brian Candler wrote: > Unless a channel is buffered, it is synchronous. A send cannot take place > until the reader is ready to receive. > > You can make it buffered using > numCh = make(chan int, 1) > go write() > go read() > > Or you can have two calls to read(): > > numCh = make(chan int) > go write() > go read() > go read() > > On Wednesday, 27 July 2022 at 08:13:34 UTC+1 aravind...@gmail.com wrote: > >> Hi All, >> When I was explaining basics of channels to newcomers, I was using the >> below example >> https://go.dev/play/p/xx2qqU2qqyp >> >> I was expecting both Write 5 and Write 3 to be printed. But only Write 5 >> was printed. I couldn't reason out the behaviour, can somebody point out >> what I am assuming wrong about. >> >> Thanks, >> Aravindhan K >> > -- 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 on the web visit https://groups.google.com/d/msgid/golang-nuts/2e036151-0069-44d9-9de2-3dcf98b33dban%40googlegroups.com.