package main

import "fmt"

// produksi hanya boleh mengirim nilai ke ch.
func produksi(ch chan<- int, data []int) {
	for _, v := range data {
		ch <- v
	}
	close(ch)
}

// konsumsi hanya boleh menerima nilai dari ch.
func konsumsi(ch <-chan int) []int {
	hasil := make([]int, 0, 4)
	for v := range ch {
		hasil = append(hasil, v)
	}
	return hasil
}

func main() {
	ch := make(chan int)

	go produksi(ch, []int{10, 20, 30, 40})
	hasil := konsumsi(ch)

	total := 0
	for _, v := range hasil {
		total += v
	}
	fmt.Println("diterima:", hasil)
	fmt.Println("total   :", total)
}
