publish channels
This commit is contained in:
parent
deafc3a0bf
commit
a5156639ae
@ -27,7 +27,7 @@ Maps
|
||||
# OK Guards
|
||||
Goroutines
|
||||
# Concurrent Goroutines
|
||||
# Channels
|
||||
Channels
|
||||
# Channel Buffering
|
||||
# Channel Directions
|
||||
# Synchronization
|
||||
|
@ -1,10 +1,26 @@
|
||||
// _Channels_ are the pipes that connect goroutines in a
|
||||
// concurrent Go program. You can send values into
|
||||
// channels from one goroutine and receive those values
|
||||
// into another goroutine.
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
var messages chan string = make(chan string)
|
||||
|
||||
// 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 the `messages`
|
||||
// channel we made above, from a new goroutine.
|
||||
go func() { messages <- "ping" }()
|
||||
|
||||
// The `<-channel` syntax _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)
|
||||
}
|
||||
|
10
examples/channels/channels.sh
Normal file
10
examples/channels/channels.sh
Normal file
@ -0,0 +1,10 @@
|
||||
# When we run the program the `"ping"` message is
|
||||
# succesfully passed from one goroutine to another via our
|
||||
# channel.
|
||||
$ go run channels.go
|
||||
ping
|
||||
|
||||
# By default sends and receives block until both the
|
||||
# sender and receiver are ready. This property allowed
|
||||
# us to wait at the end of our program for the `"ping"`
|
||||
# message without having to use any other synchronization.
|
Loading…
x
Reference in New Issue
Block a user