있다면 값들이 순서대로 반환된다. 채널이 버퍼가 없거나 버퍼가 있는 채널에 더 이상 값이 없
다면 채널 타입의 제로 값을 반환한다.
여기까지 봤을 때, 맵에서 비슷한 경험에 대한 질문이 생길 것이다. 채널에서 값을 읽었을 때,
채널이 닫혀서 반환되는 제로 값과 실제
0
의 값으로 쓰여진 것을 가져온 건지 구분하는 방법이
궁금할 것이다.
Go
는 일관성 있는 언어가 되려고 노력하기 때문에, 이에 대한 해답도 비슷한
다. 콤마
OK
관용구를 사용하여 채널의 닫힘 유무를 확인할 수 있다.
v, ok := <-ch
ok
가
true
라면 채널은 열려 있는 것이고,
false
라면 채널은 닫힌 것이다.
TIP
닫혔을지도 모르는 채널에서 값을 가져올 때는 항상 콤마
ok
관용구를 사용하여 채널이 열려 있는지 확인하
도록 하자.
채널을 닫아야 하는 책임은 채널에 쓰기를 하는 고루틴에 있다. 채널 닫기는 해당 채널이 닫혀
지기를 기다리는 고루틴이 있는 경우에만 필요하다 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.