Go Bonjour tout le monde Goroutine


Exemple

single channel, single goroutine, one write, one read.

package main

import "fmt"
import "time"

func main() {
    // create new channel of type string
    ch := make(chan string)

    // start new anonymous goroutine
    go func() {
        time.Sleep(time.Second)
        // send "Hello World" to channel
        ch <- "Hello World"
    }()
    // read from channel
    msg, ok := <-ch
    fmt.Printf("msg='%s', ok='%v'\n", msg, ok)
}

Exécuter sur le terrain de jeu

Le canal ch est un canal non tamponné ou synchrone .

Le time.Sleep est ici pour illustrer main() fonction main() qui attendra sur le canal ch , ce qui signifie que la fonction littérale exécutée en tant que goroutine a le temps d’envoyer une valeur via ce canal: l’ opérateur de réception <-ch va bloquer main() . Si ce n'était pas le cas, le goroutine serait tué lorsque main() quitterait et n'aurait pas le temps d'envoyer sa valeur.