Goroutine
Channel
ch := make(chan string)
: 버퍼 없는 string 타입의 채널을 생성합니다
ch := make(chan int, 10)
: 버퍼 크기가 10인 int 타입의 채널을 생성합니다
a := <-ch
: 채널에서 데이터를 받아 a에 할당합니다
ch <- b
: 채널에 b를 보냅니다
- 채널의 데이터는 한 번만 받을 수 있습니다.
- 파라미터로 사용될 때 수신 전용과 송신 전용을 표현할 수 있습니다
in <-chan string
: 수신 전용
out chan<- string
: 송신 전용
- 버퍼가 없는 채널이나 버퍼가 다 찬 채널에 데이터를 보내면 다른 고루틴에서 해당 채널에서 데이터를 받을 때까지
블로킹
됩니다
- 데이터가 없는 채널에서 데이터를 받으려고 하면 채널에 데이터가 들어올 때까지 블로킹 됩니다
close(ch)
- 채널을 닫는 책임은 채널에 데이터를 보내는 고루틴에 있습니다
- 채널이 닫히길 기다리는 고루틴이 있는 경우에만 닫기가 필요합니다
- 닫힌 채널에서 값을 받으면 버퍼에 있는 값을 반환하고, 모든 버퍼가 비면 제로 값을 반환합니다
- 닫힌 채널에 값을 보내면 패닉이 발생합니다
v, ok := <-ch
, ok 관용구를 통해 닫힌 채널인지 확인할 수 있습니다
for-range