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 會被殺死,並且沒有時間傳送它的值。