channel でブロックするようなコードが書ける。例えばスレッドの並列数を制限したいとか、そういう簡単な用途で使うのに取り回しがいい。 package main import ( "fmt" "time" ) func main() { go func() { for { fmt.Printf(".") time.Sleep(100 * time.Millisecond) } }() queue := make(chan int, 3) time.Sleep(1 * time.Second) queue <- 1 fmt.Println(1) time.Sleep(1 * time.Second) queue <- 2 fmt.Println(2) time.Sleep(1 * time.Second) queue <- 3 fmt.Println(3) go func() { time