はじめてのチャネル

チャネルを使ったfizzbuzzを。出力めちゃくちゃだけどw

package main

import (
	"fmt"
	"strconv"
)

func fizzbuzz(min, max int, ch chan string) {
	for i := min; i <= max; i++ {
		numStr := strconv.Itoa(i)
		outStr := numStr + ": "

		switch {
		case i % 15 == 0:
			outStr += "fizzbuzz"
		case i % 5 == 0:
			outStr += "buzz"
		case i % 3 == 0:
			outStr += "fizz"
		default:
			outStr += numStr
		}

		fmt.Println(outStr)
	}

	ch <- "end"
}

func main() {
	ch1 := make(chan string)
	ch2 := make(chan string)

	go fizzbuzz(1, 50, ch1)
	go fizzbuzz(51, 100, ch2)

	<- ch1
	<- ch2
}

並列処理簡単に書けるねー。