ゴルーチン⑧DefaultとSelection
Golangの基礎学習〜Webアプリケーション作成までの学習を終えたので、復習を兼ねてまとめていく。 基礎〜応用まで。
package main
//Default Selection と for break
//for select ループから抜ける
import (
"fmt"
"time"
)
func main() {
//time.Tick,After 時間のchannelを返す
tick := time.Tick(100 * time.Millisecond)
boom := time.After(500 * time.Millisecond)
//名前はなんでもいい
OuterLoop:
for {
//3-1 あまり良くない例だが
//isBreak := false
select {
//1
//<- tick 変数がいらない場合はこのように書ける
case <- tick:
fmt.Println("1秒")
case <- boom:
fmt.Println("5秒")
//3-1
//isBreak = True
//3-2
//抜ける
/*
returnにするとmain()から抜けてしまうため####が表示されない。
breakだけだと、selectにはbreakがないため、無限ループになる。
break OuterLoopにすると全ての処理が終わったら抜ける
同様のことを、ifでやること(3-1)もできるが、望ましくない
*/
break OuterLoop
// return
//2
//どちらでもない場合
default:
fmt.Println(" .")
time.Sleep(50 * time.Millisecond)
}
//3-0 ここでbreakすると抜けられる。これをやる方法が3-1
//break
//3-1 このようにもできるが、3-2へ
/*if isBreak{
break
}*/
}
fmt.Println("##############")
}