for range ch
- range에 채널이 있는 경우 블락이 된다. (무한대기)
- 채널 종료를 통해 블락을 해제할 수 있다.
- 타이머 종료는 timer.Stop()으로 가능하다.
package main
import (
"fmt"
"time"
)
func testForChannel(ch <-chan int){
for obj := range ch {
fmt.Println(obj)
}
}
func testForTimer(ch <-chan time.Time){
for obj := range ch {
fmt.Println(obj)
}
}
func main() {
timer := time.NewTicker(2 * time.Second)
ch := make(chan int)
go testForChannel(ch)
go testForTimer(timer.C)
ch <- 1
time.Sleep(2 * time.Second)
ch <- 2
time.Sleep(10 * time.Second)
timer.Stop()
for{}
}