#【Golang】ゴルーチン⑦チャネルのセレクト
Golangの基礎学習〜Webアプリケーション作成までの学習を終えたので、復習を兼ねてまとめていく。 基礎〜応用まで。
package main
//channelとselect
//selectを使った受信
//複数のチャネルを使った受信の分岐
//マルチプロセスのよう
import (
"fmt"
"time"
)
func goroutine1(c chan int) {
//無限ループを避ける場合、条件を決め、close()する
//下記、無限ループ
for {
c <- 100
//1秒
time.Sleep(1 * time.Second)
}
}
func goroutine2(c chan string) {
for {
c <- "groutin2"
time.Sleep(3 * time.Second)
}
}
func main() {
c1 := make(chan int)
c2 := make(chan string)
go goroutine1(c1)
go goroutine2(c2)
//無限ループする
for {
//channelで分岐できる
select {
//ch1からの受信
case msg1 := <- c1:
fmt.Println(msg1)
//ch2からの受信
case msg2 := <- c2:
fmt.Println(msg2)
}
}
}