golang中,goroutine可以透過 channel來通訊.
請看以下範例,其中使用了一個新的指令chan.
// hello55
package main
import (
"fmt"
"time"
)
func 丁丁(ch chan string) {
ch <- "你好! #1"
ch <- "你好! #2"
ch <- "你好! #3"
ch <- "你好! #4"
}
func 玉面飛鷹(ch chan string) {
var input string
for {
input = <-ch
fmt.Printf("玉面飛鷹收到: %s\n", input)
}
}
func main() {
ch := make(chan string)
go 丁丁(ch)
go 玉面飛鷹(ch)
time.Sleep(time.Second * 3)
}
執行結果:
λ ./hello55
玉面飛鷹收到: 你好! #1
玉面飛鷹收到: 你好! #2
玉面飛鷹收到: 你好! #3
玉面飛鷹收到: 你好! #4
main()產生兩個goroutine分別叫 丁丁 與 玉面飛鷹.
傳遞進由main產生的channel,其中傳遞的資料型態為string.
接著就可以看到丁丁很熱情的向玉面飛鷹打招呼.
玉面飛鷹 : 丁丁說你好....
<pre class="c" name="code">λ ./hello55
玉面飛鷹收到: 你好! #1
玉面飛鷹收到: 你好! #2
玉面飛鷹收到: 你好! #3
玉面飛鷹收到: 你好! #4