Go 跳转控制语句-break

水深无声 2021-07-25 02:16 629阅读 0赞

一 问题引出

随机生成 1-100 的一个数,直到生成了 99 这个数,看看你一共用了几次?

1 分析

编写一个无限循环的控制,然后不停的生成随机数,当生成 99 时,就退出这个无限循环,退出循环需要用到break。

2 代码

  1. package main
  2. import (
  3. "fmt"
  4. "math/rand"
  5. "time"
  6. )
  7. func main() {
  8. // 为了生成一个随机数,还需要为rand设置一个种子.
  9. // time.Now().Unix() : 返回一个从1970:01:01 的0时0分0秒到现在的秒数
  10. // rand.Seed(time.Now().Unix())
  11. // 如何随机的生成1-100整数
  12. // n := rand.Intn(100) + 1
  13. // 随机生成 1-100 的一个数,直到生成了 99 这个数,看看你一共用了几次
  14. // 分析思路
  15. // 编写一个无限循环的控制,然后不停生成随机数,当生成了 99 时,就使用 break 退出这个无限循环
  16. var count int = 0
  17. for {
  18. rand.Seed(time.Now().UnixNano())
  19. n := rand.Intn(100) + 1
  20. count++
  21. if n == 99 {
  22. break // 用来跳出 for 循环
  23. }
  24. }
  25. fmt.Println("生成 99 一共使用了 ", count)
  26. }

3 测试

  1. 生成 99 一共使用了 16883

二 基本介绍

break 语句用于终止某个语句块的执行,用于中断当前 for 循环或跳出 switch 语句。

三 基本语法

  1. {
  2. ...
  3. break
  4. ...
  5. }

四 图解 break

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5ncWl1bWluZw_size_16_color_FFFFFF_t_70

五 break 的注意事项和使用细节

1 break 语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块。

2 示例

  1. package main
  2. import "fmt"
  3. func main() {
  4. // 演示一下指定标签的形式来使用 break
  5. label2:
  6. for i := 0; i < 4; i++ {
  7. // label1: // 设置一个标签
  8. for j := 0; j < 10; j++ {
  9. if j == 2 {
  10. // break // break 默认会跳出最近的for循环
  11. // break label1
  12. break label2 // j=0 j=1
  13. }
  14. fmt.Println("j=", j)
  15. }
  16. }
  17. }

3 测试

  1. j= 0
  2. j= 1

4 说明

a break 默认会跳出最近的 for 循环。

b break 后面可以指定标签,跳出标签对应的 for 循环。

六 实战

1 100 以内的数求和,求出当和第一次大于2 的当前数。

a 代码

  1. package main
  2. import "fmt"
  3. func main() {
  4. sum := 0
  5. for i := 1; i <= 100; i++ {
  6. sum += i // 求和
  7. if sum > 20 {
  8. fmt.Println("当sum>20时,当前数是", i)
  9. break
  10. }
  11. }
  12. }

b 测试

  1. sum>20时,当前数是 6

2 实现登录验证,有三次机会,如果用户名为”小龙女”,密码”666”,提示登录成功,否则提示还有几次机会。

a 代码

  1. package main
  2. import "fmt"
  3. func main() {
  4. var name string
  5. var pwd string
  6. var loginChance = 3 //
  7. for i := 1; i <= 3; i++ {
  8. fmt.Println("请输入用户名")
  9. fmt.Scanln(&name)
  10. fmt.Println("请输入密码")
  11. fmt.Scanln(&pwd)
  12. if name == "小龙女" && pwd == "666" {
  13. fmt.Println("恭喜你登录成功!")
  14. break
  15. } else {
  16. loginChance--
  17. fmt.Printf("你还有%v次登录机会,请珍惜\n", loginChance)
  18. }
  19. }
  20. if loginChance == 0 {
  21. fmt.Println("机会用完,没有登录成功!")
  22. }
  23. }

b 测试

  1. 请输入用户名
  2. aaa
  3. 请输入密码
  4. bbb
  5. 你还有2次登录机会,请珍惜
  6. 请输入用户名
  7. 小龙女
  8. 请输入密码
  9. 666
  10. 恭喜你登录成功!

发表评论

表情:
评论列表 (有 0 条评论,629人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Go 控制语句-break

    一 问题引出 随机生成 1-100 的一个数,直到生成了 99 这个数,看看你一共用了几次? 1 分析 编写一个无限循环的控制,然后不停的生成随机数,当生成 99

    相关 Go 控制语句-continue

    一 基本介绍 continue 语句用于结束本次循环,继续执行下一次循环。 continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环