開発環境
- 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 コメント:
コメントを投稿