LoginSignup
0
0

More than 3 years have passed since last update.

パイプライン利用時のrangeについて

Last updated at Posted at 2018-09-02

最近業務などgo言語を利用することがあって、一部処理にスレッドアンセーフな処理があり、パイプラインを使った並列化で実装しました。
チャンネルでは、無限ループで閉じられたかどうかというif文を利用して、閉じられた場合には、ループを抜けるというようなロジックを記載することがありますが、range で実装出来ることを知ったので自分へのメモとして記載しておきます。

package main

import "fmt"                                                                                                                                                                                     

func main() {
    a := make(chan int)
    b := make(chan int)                                                                                                                                                                                                                                                                                                                                                                  
    go func () {
        for x := 0; x < 100; x++ {                                                                                                                                                                                
            a <- x                                                                                                                                                             
        }                                                                                                                                                                                                
        close(a)                                                                                                                                                                           
    }()                                                                                                                                                                                                                                                                                                  
    go func () {                                                                                                                                                                                              
        for x := range a {
            b <-  x * x                                                                                                                                                                         
        }                                                                                                                                                                                                 
        close(b)                                                                                                                                                                    
    }()                                                                                                                                                                                                                                                                                                                                                                                              
    for x := range b {                                                                                                                                                                  
        fmt.Println(x)                                                                                                                                                                            
    }                                                                                                                                                                                                                                                                                                                                                                                           
} 
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0