더북(TheBook)

5.2.1 채널 방향

채널은 기본적으로 양방향 통신이 가능한 상태로 만들어진다. 하나의 채널로 값을 전송할 수도 있고 수신할 수도 있다. 하지만 실제로는 채널을 구조체의 필드로 사용하거나 함수의 매개변수로 전달하는 것이 일반적인데, 이때는 채널이 대부분 단방향으로만 사용된다. 즉, 수신 전용 채널 또는 송신 전용 채널이다. 채널을 단방향으로만 사용할 때는 chan<-type, <-chan type처럼 방향을 지정해서 선언할 수 있다.

chan<- string // 송신 전용 채널
<-chan string // 수신 전용 채널

수신 전용 채널에 값을 전달하려고 하거나 송신 전용 채널로부터 값을 수신하려고 하면 컴파일 오류가 발생한다.

Go 코드 컨벤션

채널을 단방향으로 사용할 때는 반드시 방향을 지정해주는 것이 좋다. 방향을 지정해주면 채널을 잘못 사용했을 때(수신 전용 채널에 값을 전달하려고 하거나 송신 전용 채널로부터 값을 수신하려고 했을 때) 컴파일 에러가 발생한다. 코드를 작성할 때 이 에러를 통해 실수를 피할 수 있다.

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