I channel sono i pipe che connettono goroutine concorrenti. Puoi mandare e ricevere dei valori da una goroutine a un’altra goroutine attraverso un channel. |
|
package main
|
|
import "fmt"
|
|
func main() {
|
|
Puoi creare un nuovo channel con la sintassi
|
messages := make(chan string)
|
Puoi inviare un valore in un channel con la
sintassi |
go func() { messages <- "ping" }()
|
Puoi ricevere un valore da un channel con la
sintassi |
msg := <-messages
fmt.Println(msg)
}
|
Quando eseguiremo il programma potremmo vedere che
|
$ go run channels.go
ping
|
Di default l’invio e il ricevimento si bloccano finché
sia il mittente che il destinatario non sono pronti.
Questo ci ha permesso di aspettare alla fine del
programma per il messaggio |
Prossimo esempio: Channel con Buffer.