| Channels are the pipes that connect concurrent
goroutines. You can send values into channels from one
goroutine and receive those values into another
goroutine. |  | 
        
        
          |  |    package main
 | 
        
        
          |  | import "fmt"
 | 
        
        
          |  | func main() {
 | 
        
        
          | Create a new channel with make(chan val-type).
Channels are typed by the values they convey. |     messages := make(chan string)
 | 
        
        
          | Send a value into a channel using the channel <-syntax. Here we send"ping"to themessageschannel we made above, from a new goroutine. |     go func() { messages <- "ping" }()
 | 
        
        
          | The <-channelsyntax receives a value from the
channel. Here we’ll receive the"ping"message
we sent above and print it out. |     msg := <-messages
    fmt.Println(msg)
}
 |