Go语言工程实践课后作业|青训营

162 阅读2分钟

Go语言工程课程实践作业(一)

[原课程链接](走进 Go 语言基础语法 - 掘金 (juejin.cn))

1.猜谜游戏

在此游戏中程序会随机先生成0~100中一个数字,然后提示玩家猜测。玩家每次输入一个数字,程序会告诉玩家,这个猜测的数值是高于还是低于秘密的随机数,并且让玩家再次猜测。猜对了就告诉玩家胜利并退出程序。

1.1程序生成一个随机数

其输出效果如下:可以看到每次都是不同的随机数。

生成随机数.png 根据课程可知,可能会存在可能每次会生成固定的数字,为了避免此情况。我们根据课程所提示那样,用时间戳来初始化随机数种子(time.now.unix)

1.2读取用户输入

接下来实现对用户的输入输出进行解析读写 每个程序执行都会打开几个文件,stdin,stdout,stderr等,stdin可以用os.Stdin来得到。然后操作这个文件很不方便,我们会用bufio.NewReader把一个文件转换成一个reader变量。reader变量上会有很多用来操作一个流的操作,我们可以用它的readingString方法来读取一行,如果失败了的话,我们会打印错误并退出。ReadingString返回的结果包括结尾的换行符,我们把它去掉,再转成数字。如果转换失败,我们同样打印错误,并退出。 这里出现了一个问题,在转换数字那部分时,程序将guess直接当做0,如果直接以input为接受对象,可以存储用户输入数字。

我在实现用户输入时发现一个问题,按照所给代码,发现会报错,报错如下:

猜谜游戏_用户输入.png 这里上网搜索了一下,发现说是因为Linux系统下会输入时会带\n,但在Window下会带入\r\n,所以Window下我们需要删除\r\n这里添加一行代码如下:

input = strings.Replace(input, "\r", "", -1)	//Windows的Go语言输入会带入\r\n,得先删除\r

之后用户输入则顺利实现

1.3实现判断逻辑

如果用户输入大于或小于所猜测数字,我们则提示用户继续猜测。

1.4实现用户循环

在外框加一个for循环即可。 整体代码如下:

猜谜游戏.png

1.5测试效果如下图:

猜谜游戏_测试效果.png