技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

2018-12-02から1日間の記事一覧

channelを経由した関数間の引き渡し【Go】

Go

channelに値を送信する関数と、 channelから値を受信して処理をする関数を作成し、 sync.WaitGroupを使って並行処理を行います。 func producer(c chan int, i int) { c <- i * 3 } func consumer(c chan int, wg *sync.WaitGroup) { for v := range c { fun…

Buffered channels【Go】

Go

容量が決められたchannelのことを指します。 容量を決めるにはmakeを使用し、第2引数で指定します。 c := make(chan int, 2) // サイズ2のchannel サイズを超える数をchannelに入れようとすると、deadlockエラーが発生します。 c := make(chan int, 2) c <- …

channel【Go】

Go

channelを使って、goroutineと関数の間で、データをやり取りすることができます。 次の例では、スライスの中身を足し合わせた結果を、channelを使って返却します。 func useChannel(s []int, c chan int) { var sum int for _, v := range s { sum += v } c …

goroutine、sync.WaitGroup【Go】

Go

goroutineは、プログラムの並行処理を実現します。 goroutineはマルチスレッドのようなもので、 goroutineの起動毎に回路が作られ、その中で処理が行われます。 起動方法は、次の通りです。 go 関数(またはメソッド) 以降に記述された処理が、goと記載され…