답변:
Go 채널을 영원히 열어두고 닫지 않는 것이 좋습니다. 채널이 더 이상 사용되지 않으면 가비지 수집됩니다.
수신기가 클로즈를 찾고있는 경우에만 채널을 닫아야합니다. 채널을 닫는 것은 더 이상 데이터가 뒤 따르지 않음을 나타내는 채널의 제어 신호입니다.
gc
의 저자와 gccgo
채널 close
의 저자는 필요하지 않습니다 close
. 그것은 권위있는 조언입니다.
예, 채널을 열어 두는 것이 좋습니다. 으로 이동 프로그래밍 언어 책은 말했다 :
작업이 끝나면 모든 채널을 닫을 필요는 없습니다. 수신 고 루틴에게 모든 데이터가 전송되었음을 알리는 것이 중요 할 때만 채널을 닫으면됩니다. 가비지 수집기가 도달 할 수 없다고 결정한 채널은 닫혔는지 여부에 관계없이 자원을 회수합니다. (이것은 열린 파일에 대한 닫기 작업과 혼동하지 마십시오. 작업 이 끝나면 모든 파일 에서 Close 메서드 를 호출하는 것이 중요 합니다.)
Go는 가비지 수집이므로 실제로 아무것도 '무료'할 필요는 없습니다.
채널을 닫을 가능성이 있지만 대부분 close-channel로 사용됩니다. 해당 채널에서 다른 어떤 것도 전송되지 않는다고 고 루틴 (또는 메인 프로그램)에 알려주십시오.