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