Go Hola mundo goroutine


Ejemplo

Un solo canal, un solo goroutine, una escritura, una lectura.

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)
}

Ejecutalo en el patio

El canal ch es un canal sin buffer o sincrónico .

El time.Sleep está aquí para ilustrar la función main() esperará en el canal ch , lo que significa que la función literal ejecutada como goroutine tiene tiempo para enviar un valor a través de ese canal: el operador de recepción <-ch bloqueará la ejecución de main() . Si no fuera así, la goroutina se eliminaría cuando main() salga y no tendría tiempo de enviar su valor.