channel实战
_package _main
import “fmt”
_func _main(){// 初始化channel // channel在使用之前,必须进行make进行初始化 // 否则,它会是一个nil ch := make(_chan _int)
// 注意:go语言中无缓冲的channel是必须要同时具备输入输出,所以不能直接 // ch <- 1 和 <-ch // 输入channel go func(){
ch <- 1}()
// 输出channel fmt.Println(<-ch)
// 关闭 close(ch)
}
案例实操
代码示例
_package _main
import (
“sync” “fmt”)
func _main() {
// 初始化eggs _
eggs := make(_chan _int, 10)
// 输入10个鸡蛋
for _i := 0; i < 10; i++ {
eggs <- i
}
_var _wg sync.WaitGroup
for i := 0; i < 100; i++ {
wg.Add(1)
_go func(num int) {
select {
case _egg := <-eggs:
fmt.Printf(“People : %d, Get egg : %d\n”, num, egg)
_default:
fmt.Println(“failed….”)
}
wg.Done()
}(i)
}
wg.Wait()
}
channel实现资源争抢








