開発環境
- macOS High Sierra - Apple (OS)
- Emacs (Text Editor)
- Go (プログラミング言語)
Introducing Go: Build Reliable, Scalable Programs (Caleb Doxsey (著)、O'Reilly Media)のChapter 10.(Concurrency)、Exercises(No. 1879)1.を取り組んでみる。
コード(Emacs)
package main import ( "fmt" "time" ) func f(c chan<- string) { for { c <- "form 1" time.Sleep(time.Second * 2) } } func g(c chan<- string) { for { c <- "form 2" time.Sleep(time.Second * 3) } } func h(c1 <-chan string, c2 <-chan string) { for i := 1; ; i += 1 { fmt.Print(i, ": ") select { case msg1 := <-c1: fmt.Println(msg1) case msg2 := <-c2: fmt.Println(msg2) } } } func main() { c1 := make(chan string) c2 := make(chan string) go f(c1) go g(c2) go h(c1, c2) var input string fmt.Scanln(&input) }
入出力結果(Terminal)
$ go run sample1.go 1: form 1 2: form 2 3: form 1 4: form 2 5: form 1 6: form 2 7: form 1 8: form 1 9: form 2 10: form 1 11: form 2 12: form 1 13: form 1 14: form 2 15: form 1 16: form 2 17: form 1 18: form 1 19: form 2 20: form 1 21: $
0 コメント:
コメントを投稿