더북(TheBook)

5.2.3 close & range

채널에 더 이상 전송할 값이 없으면 채널을 닫을 수 있다.

close(ch)

채널을 닫은 후에 메시지를 전송하면 에러가 발생한다.

채널의 수신자는 채널에서 값을 읽을 때 채널이 닫힌 상태인지 아닌지 두 번째 매개변수로 확인할 수 있다.

v, ok := <-ch

ok의 값이 false라면 채널에 더는 수신할 값이 없고 채널이 닫힌 상태이다.

for i := range c는 채널 c가 닫힐 때까지 반복하며 채널로부터 수신을 시도한다.

채널을 닫는 것은 필수가 아니다. 수신자가 채널에 더 이상 들어올 값이 없다는 것을 알아야 할 때만(예를 들면 range로 루프를 돌며 메시지를 읽어나갈 때) 채널을 닫아주면 된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.