package main

import (
"fmt"
"math/rand"
"sync"
"time"
)
//wg用来等待程序
var wg sync.WaitGroup func init() {
//设置随机数种子,加上这行代码,可以保证每次随机都是随机的
rand.Seed(time.Now().UnixNano())
} func main() {
//无缓冲的通道
court := make(chan int) //计数加2,表示要等待两个goroutine
wg.Add(2)
go player("Nadal", court)
go player("Djokovic", court)
//发球
court <- 1 //等待游戏结束
wg.Wait() }
func player(name string, court chan int) {
//在函数退出时调用Done来通知函数工作完成
defer wg.Done()
for {
ball, ok := <-court
if !ok {
//等待球被击打过来
fmt.Printf("Player %s Won\n",name)
return
}
//选随机数,然后用这个数判断我们是否丢球
n := rand.Intn(100)
fmt.Printf("n=%d\n",n)
if n%13 == 0 {
fmt.Printf("player %s Missed\n", name)
close(court)
return
}
fmt.Printf("Player %s Hit %d\n", name, ball)
ball++ //将球打向对手
court <- ball } }

最新文章

  1. android AES 加密
  2. SSL/TLS协议运行机制
  3. python操作sqlite数据库
  4. SQLServer2005数据导入Mysql到详细教程
  5. poj2187 Beauty Contest(旋转卡壳)
  6. 用BFS和DFS解决圆盘状态搜索问题
  7. django笔记整理
  8. 将JSON格式数据转换为javascript对象 JSON.parse()
  9. element ui 上传图片
  10. Java中选择排序,冒泡排序,插入排序,快速排序
  11. Python自学:第二章 删除空白
  12. SpringCloud入门之Maven系统安装及配置
  13. 【Git】删除某个全局配置项
  14. 2018.09.29 bzoj3885: Cow Rectangles(悬线法+二分)
  15. Linux Shell常用技巧(七)
  16. 8-[CSS]-选择器
  17. 【BZOJ4003】[JLOI2015]城池攻占 可并堆
  18. CentOS下Supervisor的安装与使用入门
  19. Maven 构建Spring-Boot工程报错
  20. centos 系统管理维护指南

热门文章

  1. Linux 常见压缩格式详解
  2. 用Jmeter做性能测试,之后报表展示
  3. 软工作业-----Alpha版本第一周小结
  4. kali系统无法使用ll命令
  5. 神经网络(2)---neurons and the brain
  6. sql 索引的使用 转载:https://www.cnblogs.com/xiaoyangjia/p/11267191.html#mysql_performance
  7. redis 事务 &amp; 锁
  8. DOM属性获取、设置、删除
  9. GO语言基本数据类型
  10. 题解 [51nod1340]地铁环线