2024-02-17 14:47:41  1092 0

go语言实现猜数小游戏

 标签:   

大家好!2024年崭新的一年开始了,在新年来临之际,恭祝各位粉丝龙年大吉大利,工作顺利!猪哥已经半年没有更新博客了,在此万分抱歉,今年打算多更新一些go相关的课程和博文,希望大家多多关照本站!今天给各位刚入门go语言的小伙伴讲解一个go 语言开发的猜数小游戏案例。废话不多说直接上代码看效果!

package main

import (
    "fmt"
    "math/rand"
)

func main() {
    var guessNum int
loop:
    for i := 0; i < 10; i++ {
       randomNum := rand.Intn(5) + 1
       fmt.Println("请输入一个1-10的整数猜猜看看")
       fmt.Scanln(&guessNum)
       switch {
       case i == 0 && randomNum == guessNum:
          fmt.Println("恭喜你猜中了,当前次数第一次!你真是个天才")
          break loop
       case i >= 1 && i < 4 && randomNum == guessNum:
          fmt.Printf("恭喜你猜中了,当前次数%d!你很聪明块赶上我了\n", i+1)
          break loop
       case i >= 3 && i < 10 && randomNum == guessNum:
          fmt.Printf("恭喜你猜中了,当前次数%d!一般般\n", i+1)
          break loop
       case i == 9 && randomNum == guessNum:
          fmt.Printf("恭喜你可算猜对了,当前次数%d!一般般\n", i+1)
          break loop
       default:
          fmt.Printf("很遗憾没有猜对当前随机数为%d,你的竞猜数为%d 这是你第%d次竞猜-还剩%d次\n", randomNum, guessNum, i+1, 10-(i+1))
       }

    }
}

image.png

运行效果如上图


这端代码。实现了一个猜数的小游戏效果,一共可以猜10次,如果猜对了程序就直接退出,猜的次数超过10次如果还没有猜对程序也会自动退出。代码比较简单

这里我们重点关注 break  我们发现 代码 定义了一个 loop标签 而不是直接break 这是为什么呢?下面重点看下这段代码

for {
  switch f() {
  case true:
    break
  case false:
    // Do something  }}

如果函数调用f()返回的结果是true,进入到case true分支,会发生什么?会退出for循环么?

答案是:只退出了switch语句,并不会退出for循环,所以break后又继续执行for循环里的代码。

现在知道为什么这样了吗?如果在for循环中加入switch 加入break 并不会结束for循环,只会结束switch语句,为了解决这个问题,我们需要加入 go中的标签功能,上面的猜数游戏中我们在for循环的外面 定义了loop 标签 已保证 在switch中使用break可以跳出for循环,这个知识点很重要!

最后总结下!如果在for循环中使用了switch 并且 switch语句中使用了break 要想break 起作用 就必须在for 循环外面定义标签 然后使用break 跳到定义的标签处 结束for循环!这就是今天我们要说的有关go中使用break需要注意的事项。感谢阅读!