Go语言基础Ⅱ | 青训营笔记

110 阅读1分钟

猜谜游戏

按照提示输入一个0到100的数,若输入的数与随机生成的数相等,则胜利且游戏结束,反之则一直进行输入猜数。(Goland) image.png image.png

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)