더북(TheBook)

5.2 채널

채널(channel)은 고루틴끼리 정보를 교환하고 실행의 흐름을 동기화하기 위해 사용한다.

그림 5-1 고루틴과 채널

채널은 일반 변수를 선언하는 것과 똑같이 선언하고, make() 함수로 생성한다. 채널을 정의할 때는 chan 키워드로 채널을 통해 주고받을 데이터의 타입을 지정해주어야 한다.

// 채널 변수 선언 후 make() 함수로 채널 생성
var ch chan string
ch = make(chan string)
 
// make() 함수로 채널 생성 후 바로 변수에 할당
done := make(chan bool)

채널을 정의할 때 지정한 데이터의 타입만 채널을 통해 주고받을 수 있다. 타입에 상관없이 주고받을 수 있게 하려면 chan interface{}처럼 채널의 타입을 interface{}로 지정하면 된다.

채널로 값을 주고받을 때는 <- 연산자를 사용한다.

ch <- “msg” // ch 채널에 “msg” 전송
m := <- ch  // ch 채널로부터 메시지 수신

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