Hello World Goroutine

单通道,单个 goroutine,一个写入,一个读取。

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

在操场上跑吧

通道 ch无缓冲或同步通道

time.Sleep 用于说明 main() 函数将在 ch 通道上等待,这意味着作为 goroutine 执行的函数文字有时间通过​​该通道发送值: 接收运算符 <-ch将阻止 main()的执行。如果没有,当 main() 退出时,goroutine 会被杀死,并且没有时间发送它的值。