Concurrency in Go materializes itself in the form of goroutines (independent activities) and channels (used for communication)…
The most intuitive order relation of send and receiving operations has been introduced during the first part:
Sending to a channel happens before receiving sent…
Suppose that Go program starts two goroutines:
package main
Certain operations using channels can block the whole goroutine forever. Let’s see a couple of maybe less…
It’s common to see range clause with array, slice, string or map as an expression’s type: