Channels는 동시에 실행되고 있는 고루틴을 연결해주는 파이프입니다. 한 고루틴으로부터 채널에 값을 전달하면 다른 고루틴에서 이 값을 받을 수 있습니다. |
|
package main
|
|
import "fmt"
|
|
func main() {
|
|
|
messages := make(chan string)
|
|
go func() { messages <- "ping" }()
|
|
msg := <-messages
fmt.Println(msg)
}
|
프로그램을 실행하면 |
$ go run channels.go
ping
|
기본적으로 송신과 수신은 송신자와 수신자가 준비될 때까지 블로킹됩니다. 이 특징은 다른 동기화 작업을 하지 않고도 |
다음 예제: 채널 버퍼링.