In this video, we are going to be looking at Buffered Channels in Go and what they are used for.
Overview
package main
import (
"fmt"
"math/rand"
"time"
)
func CalculateValues(values chan int) {
for i := 0; i <= 10; i++ {
value := rand.Intn(10)
fmt.Printf("Value Calculated: %d\n", value)
values <- value
}
}
func main() {
values := make(chan int, 2)
go CalculateValues(values)
for i := 0; i <= 10; i++ {
time.Sleep(1 * time.Second)
value := <-values
fmt.Println(value)
}
}
Output
$ go run main.go
Value Calculated: 1
Value Calculated: 7
Value Calculated: 7
1
Value Calculated: 9
7
Value Calculated: 1
7
Value Calculated: 8
9
Value Calculated: 5
1
Value Calculated: 0
8
Value Calculated: 6
5
Value Calculated: 0
0
Value Calculated: 4
6
0
4