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 “`