チャネルの受信とClose
チャネルはCloseしたら0値を返すので、受信側がCloseかどうかは第二引数をとって判別する package main import ( "fmt" "time" ) func A(ch chan int) { for { select { case v, ok := <-ch: fmt.Println(v, ok) } } } func main() { ch := make(chan int, 10) go A(ch) for i := 1; i <= 5; i++ { ch <- i } close(ch) time.Sleep(100 * time.Microsecond) } 結果 ...