// testchannel
package main
import (
"fmt"
"math/rand"
"time"
)
func CalculateValue(values chan int) {
// 设置随机种子,避免随机函数生成相同的值
rand.Seed(time.Now().UnixNano())
value := rand.Intn(100)
fmt.Println("计算随机值: {}", value)
// 往通道发送值
values <- value
}
func main() {
//建立一个通道,go进入通道产生一个随机数,然后返回来
//通道满了会阻塞,空了会阻塞,不发送不接收,也会阻塞
fmt.Println("Golang Channel 教程")
// 创建int类型通道,只能传入int类型值
values := make(chan int, 2)
defer close(values)
for i := 1; i < 5; i++ {
go CalculateValue(values)
// time.Sleep(1)
// 从通道接收值
value := <-values
fmt.Println(value)
}
}