Skip to Content
러닝 Go : Go 개발자처럼 생각하는 방법
book

러닝 Go : Go 개발자처럼 생각하는 방법

by 존 보드너, 윤대석
February 2022
Beginner to intermediate
452 pages
10h 48m
Korean
Hanbit Media, Inc.
Content preview from 러닝 Go : Go 개발자처럼 생각하는 방법
283
10
Go의 동시성
10.3.3
채널 닫기
채널에 쓰기를 완료했을 때,
close
내장 함수를 이용해 채널을 닫을 수 있다.
close(ch)
일단 채널을 닫으면 채널에 쓰기를 시도하거나 다시 닫으려 한다면 패닉을 발생시킨다. 닫힌
채널에 읽기를 시도하는 것은 언제나 성공한다. 채널이 버퍼링되고 아직 읽어가지 않는 값이
있다면 값들이 순서대로 반환된다. 채널이 버퍼가 없거나 버퍼가 있는 채널에 더 이상 값이 없
다면 채널 타입의 제로 값을 반환한다.
여기까지 봤을 때, 맵에서 비슷한 경험에 대한 질문이 생길 것이다. 채널에서 값을 읽었을 때,
채널이 닫혀서 반환되는 제로 값과 실제
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.
Start your free trial

You might also like

효율적인 리눅스 명령어 사용의 기술

효율적인 리눅스 명령어 사용의 기술

Daniel J Barrett

Publisher Resources

ISBN: 9791162245309