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 会被杀死,并且没有时间发送它的值。