割り算などの計算をせず、時に身を任せるFizzBuzzです。絶妙なバランスでなりたっています。
package main
import (
"time"
)
func main() {
i := 1
skip := false
fizz := time.Tick(3 * time.Second) // 3秒ごとに送信するチャネル
time.Sleep(10 * time.Millisecond) // 前後のチャネルの開始時刻を微調整
buzz := time.Tick(5 * time.Second) // 5秒ごとに送信するチャネル
time.Sleep(10 * time.Millisecond) // 前後のチャネルの開始時刻を微調整
num := time.Tick(1 * time.Second) // 1秒ごとに送信するチャネル
for {
select {
case <-fizz:
print("Fizz")
skip = true
case <-buzz:
print("Buzz")
skip = true
case <-num:
if !skip {
print(i)
}
print("\n")
skip = false
i++
}
if i > 100 {
return
}
}
}