publish channels
This commit is contained in:
parent
deafc3a0bf
commit
a5156639ae
@ -27,7 +27,7 @@ Maps
|
|||||||
# OK Guards
|
# OK Guards
|
||||||
Goroutines
|
Goroutines
|
||||||
# Concurrent Goroutines
|
# Concurrent Goroutines
|
||||||
# Channels
|
Channels
|
||||||
# Channel Buffering
|
# Channel Buffering
|
||||||
# Channel Directions
|
# Channel Directions
|
||||||
# Synchronization
|
# 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
|
package main
|
||||||
|
|
||||||
import "fmt"
|
import "fmt"
|
||||||
|
|
||||||
func main() {
|
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" }()
|
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
|
msg := <-messages
|
||||||
fmt.Println(msg)
|
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