日: 2019年2月23日

  • go routine/channelを整理する

    go routine/channelを整理する

    go routineのchannelについて勉強したので整理する

    package main
    
    import (
    	"fmt"
    )
    
    // sliceとchannelを受け付ける
    func goroutine(s []int, c chan int) {
    	sum := 0
    	for _, v := range s {
    		sum += v
    	}
    	// channelに送信
    	c <- sum
    }
    
    // channel
    
    func main() {
    	// スライスのinteger
    	s := []int{1, 2, 3, 4, 5}
    	// channel (makeで書く)
    	// makeはキューの働きをする
    	c := make(chan int)
    	go goroutine(s, c)
    
    	// チャネルを受信。ブロッキングの役割があるので、入ってくるまでずっと待っている状態
    	x := <-c
    	fmt.Println(x)
    }

    結果 “` 15 “`