当我们学习完了go语言的基础语法,那么就让我们进行实战训练吧
实战项目 猜大小
项目功能:
运行之后生成一个随机数,用户可以输入数字,程序判断用户输入数字与生成数字的大小进行比较,并告诉用户猜测结果,是猜大了,猜小了还是猜对了
需要的go语言相关知识:
- 生成随机数
- if分支语句
- 读取用户输入以及输入结果
- for循环语句
开始实战
第一步 生成随机数
我们使用math包中的rand函数(当然有实力的大佬们也可以选择直接实现),设置随机种子,并生成范围内随机数字
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
第二步 我们读取用户输入
用户的输入我们通过os.Stdin获取输入流,并将其转化为字符串,但是这里需要注意我们读取转化得到的字符串会比输入的多\r\n,这是window的换行符,在linux系统中为\n,所以我们需要去去除掉换行符并将其转化为整数
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n')
fmt.Println(input)
if err != nil {
fmt.Printf("输入出现错误", err)
return
}
input = strings.TrimSuffix(input, "\n")
input = strings.TrimSuffix(input, "\r")
guess, err := strconv.Atoi(input)
第三步 将用户输入与生成随机数进行比较
这里我们就需要用到之前学的go语言语法中的if语句了,对用户输入和生成随机数进行判断大小,并将结果输出到控制台上
if guess > secretNumber {
fmt.Printf("输入过大,请重新输入")
} else if guess < secretNumber {
fmt.Printf("输入过小,请重新输入")
} else {
fmt.Printf("猜测正确")
}
第四步 当用户猜错后进行再次猜测
当用户猜错后我们需要让用户再次进行猜测 直到用户猜对停止 这时候我们需要使用for的无限循环以及break退出循环
for {
input, err := reader.ReadString('\n')
fmt.Println(input)
if err != nil {
fmt.Printf("输入出现错误", err)
return
}
input = strings.TrimSuffix(input, "\n")
input = strings.TrimSuffix(input, "\r")
guess, err := strconv.Atoi(input)
if err != nil {
fmt.Printf("输入出现错误", err)
return
}
if guess > secretNumber {
fmt.Printf("输入过大,请重新输入")
} else if guess < secretNumber {
fmt.Printf("输入过小,请重新输入")
} else {
fmt.Printf("猜测正确")
break
}
}
总结
总体来说,这个项目比较的简单,可以练习go语言相关语法,大家快去试试吧