Go 语言入门(实战篇)| 青训营

110 阅读3分钟

注:本篇文章将结合本人之前的学习经历进行描述,可能存在大量个人习惯,还请见谅,也欢迎提出见解!

猜谜游戏

猜谜游戏是一种经典的游戏形式,玩家需要根据给出的提示或描述来猜测正确的答案。在我们的案例中,我们将设计一个简单的数字猜谜游戏。游戏开始时,系统会随机生成一个1到100之间的整数,玩家需要通过输入数字来猜测系统生成的随机数,直到猜对为止。

步骤一:生成随机数

首先,需要使用Go语言的rand包来生成一个1到100之间的随机数作为答案。可以通过以下代码来实现:

image.png

其中:使用当前时间作为随机数生成器的种子,以确保每次运行都会产生不同的随机数,否则使用的是伪随机数。

关于随机数种子:

Go中的随机数是通过rand.Seed(种子值seedNum)设置种子值,在同一个种子下每次产生的随机数顺序是一样的。

为了保证种子值的随机性,一般采用系统时间的毫秒值作为种子值,因为系统时间的毫秒值是一直变动的。

  • time.Now().UnixMilli() 可以系统当前的毫秒时间戳;

  • time.Now().Unix() 可以系统当前的秒时间戳;

  • time.Now().UnixMicro() 可以系统当前的微秒时间戳;

  • time.Now().UnixNano() 可以系统当前的纳秒时间戳。

步骤二:获取用户输入

接下来,需要获取用户的输入。使用Go语言的fmt包来获取用户输入的数字并存储在变量中,代码如下:

image.png

当然也可以像 C/C++ 一样这么写:

image.png

步骤三:判断猜测结果

根据用户的输入,需要判断猜测结果是猜大了、猜小了还是猜对了。可以编写一个函数来进行判断,代码如下所示:

image.png

创建一个名为num的整型变量来存储用户的输入数字。然后,进入一个无限循环,直到用户猜对为止。

在每次循环中,我们使用 fmt.Scan(&num) 读取用户的输入,并检查是否有输入错误。如果有错误,我们打印出错误信息并继续下一次循环。

如果用户输入的数字小于秘密数字 secretNum,则打印 "Less than";如果大于secretNum,则打印 "More than";如果等于 secretNum,则打印 "Get it !",并跳出循环。这样,用户可以通过不断猜测数字来尝试找到秘密数字。

其中,Go 中没有 while 循环,要表达无限循环时,for 可不用写任何条件即可。

步骤四:主函数

最后,将上述步骤整合到一个主函数中,以完成游戏的逻辑。完整的代码如下所示:

image.png

运行结果:

image.png

结语

通过这个简单的猜数字游戏案例,我们学习了如何使用Go语言的随机数生成、用户输入获取和条件判断等基本功能。同时,这个案例也展示了循环和条件语句的使用,以及对错误处理的简单处理。