iT邦幫忙

DAY 6
1

蠻可愛的 Golang系列 第 6

透過 channel 來通訊

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.
接著就可以看到丁丁很熱情的向玉面飛鷹打招呼.


上一篇
月光刑警很忙
下一篇
蠻可愛的 golang 7 Lazy Evaluation
系列文
蠻可愛的 Golang30

1 則留言

0
老鷹(eagle)
iT邦高手 1 級 ‧ 2014-10-07 16:19:35

玉面飛鷹 : 丁丁說你好....

&lt;pre class="c" name="code">λ ./hello55 
玉面飛鷹收到: 你好! #1
玉面飛鷹收到: 你好! #2
玉面飛鷹收到: 你好! #3
玉面飛鷹收到: 你好! #4

我要留言

立即登入留言