Go语言的实战案例|青训营笔记

66 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

一、猜谜游戏

第一个例子里面,我们会使用Golang来构建一个猜数字游戏。在这个游戏里面,程序首先会生成一个介于1到100之间的随机整数,然后提示玩家进行猜测。玩家每次输入1个数字,程序会告诉玩家这个猜测的值是高于还是低于那个秘密的随机数,并且让玩家再次猜测。如果猜对了,就告诉玩家胜利并且退出程序。

源程序:

package main

import (
	"bufio"
	"fmt"
	"math/rand"
	"os"
	"strconv"
	"strings"
)

func main() {
	maxNum := 100                     //定义最大范围
	secretNumber := rand.Intn(maxNum) //生成随机数
	fmt.Println(secretNumber)

	fmt.Println("Please input a number between 0 and 100:")
	reader := bufio.NewReader(os.Stdin) //创建一个读取器

	for {
		input, err := reader.ReadString('\n')
		if err != nil {
			fmt.Println("Error:", err)
			continue
		}
		input = strings.TrimSuffix(input, "\n") //读取完之后会有换行符,使用strings包去掉
		input = strings.TrimSuffix(input, "\r") //windows下会有\r,需要去掉

		guess, err := strconv.Atoi(input) //将字符串转换为整数
		if err != nil {
			fmt.Println("A invaild input, please enter an integer value")
			continue
		}

		//判断猜测是否正确
		if guess > secretNumber {
			fmt.Println("Your guess is gigger than the secrect number. Please try again.")
		} else if guess < secretNumber {
			fmt.Println("Your guess is smaller than the secrect number. Please try again.")
		} else {
			fmt.Println("Correct, you win!")
			break
		}
	}

实验结果:

image.png

步骤:

Step1:生成一个0到100之间的随机数字。 为了生成随机数,我们需要先导入FMT包和math/rand包,定义一个变量,max _num是100,下面用rand.Intn来生成个随机数,再打印出这个随机数。

Step2:实现用户的输入输出,并解析成数字。用bufio.NewReader把个文件转换成 reader变量。 reader变量上会有很多用来操作一个流的操作,我们可以用它的ReadString方法来读取一行。ReaderString返回的结果包含结尾的换行符,需要将其去掉,在转换成数字。

Step3:接着比较两个值的大小。如果用户输入的值比秘密值大的话,提示猜大了,请再试一次;反之猜小了,给出相应提示。若猜对则告诉用户赢了,并结束程序。

Step4:添加循环,使用户可以一直猜测,直到正确。