猜谜游戏
按照提示输入一个0到100的数,若输入的数与随机生成的数相等,则胜利且游戏结束,反之则一直进行输入猜数。(Goland)
1、生成随机数
若没有第10行和第15行代码,每次游戏生成的数都是同一个数,这里是引入时间戳来初始化随机数种子。
2、读取用户输入
第21行代码表示读取一行输入
第22行到第25行以及第30行到第33行表示错误输入的判断及处理
第26行表示去掉换行符,第29行代码表示将输入转换成数字。
3、实现判断逻辑
由第35行到第42行实现判断逻辑。(简单易懂)
4、实现游戏循环
第20行的for开始到第43行的大括号,这一段通过for循环实现游戏的循环进行。
若猜对则通过第41行的break结束循环,游戏结束。
ps:可通过for循环设置最大答题次数。
5、作弊模式
第17行代码打印出本局游戏随机数答案,实现作弊模式。
语言进阶
1、并发vs并行
并发:多线程程序在一个核的cpu上运行。
并行:多线程程序在多个核的cpu上运行。
Go可以充分发挥多核优势,高效运行。
2、Goroutine
协程:用户态,轻量级线程,栈KB级别。
线程:内核态,线程跑多个协程,栈MB级别。 go func()
3、Channel
make(chan 元素类型,[缓冲区大小])
无缓冲通道 eg:
make(chan int)
有缓冲通道 eg:
make(chan int,2)