본문 바로가기

Go

[Go] Channel Direction https://gobyexample.com/channel-directions 채널을 함수의 파라미터로 사용할 때, 채널의 방향을 설정할 수 있습니다. 이렇게 방향이 정해진 채널은 수신 또는 송신만 수행할 수 있는데, 이러한 제약사항은 코드의 타입 안정성을 높혀줍니다. package main import "fmt" // ping 함수에 넘어오는 pings는 값을 전송하는것만이 가능합니다. // 만약 pings에 수신을 시도하면 컴파일 에러가 발생합니다. func ping(pings chan 더보기
[go] channel synchronization https://gobyexample.com/channel-synchronization 채널을 이용하여 고루틴 간의 실행 순서를 동기화할 수 있습니다. 여기서는 채널의 블러킹 recv를 이용하여 고루틴이 끝날 때 까지 대기하는 방법을 보여줍니다. package main import "fmt" import "time" // 고루틴으로 실행시킬 함수입니다. // done 채널은 고루틴의 작업이 끝났음을 알려주기 위해 사용됩니다. func worker(done chan bool) { fmt.Print("working...") time.Sleep(time.Second) fmt.Println("done") // 값을 넣어 끝났음을 알립니다. done 더보기
[go] channel buffering https://gobyexample.com/channel-bufferinggo의 채널들은 기본적으로 unbuffered입니다. 이는 채널 내부에 별도의 들어오는 값을 저장하는 공간이 없음을 뜻하며, 이 경우에는 미리 ' 더보기
[go] channel https://gobyexample.com/channels package main import "fmt" func main() { // 'make'를 이용하여 새로운 채널을 만듭니다. // 채널 뒤에는 채널에 담을 변수의 타입이 뒤따라옵니다. messages := make(chan string) // 'channel 더보기