Go 跳转控制语句-break

一 问题引出

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

1 分析

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

2 代码

package main

import (
   "fmt"
   "math/rand"
   "time"
)

func main() {
   // 为了生成一个随机数,还需要为rand设置一个种子.
   // time.Now().Unix() : 返回一个从1970:01:01 的0时0分0秒到现在的秒数
   // rand.Seed(time.Now().Unix())
   // 如何随机的生成1-100整数
   // n := rand.Intn(100) + 1
   // 随机生成 1-100 的一个数,直到生成了 99 这个数,看看你一共用了几次
   // 分析思路
   // 编写一个无限循环的控制,然后不停生成随机数,当生成了 99 时,就使用 break 退出这个无限循环
   var count int = 0
   for {
      rand.Seed(time.Now().UnixNano())
      n := rand.Intn(100) + 1
      count++
      if n == 99 {
         break // 用来跳出 for 循环
      }
   }
   fmt.Println("生成 99 一共使用了 ", count)
}

3 测试

生成 99 一共使用了  16883

二 基本介绍

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

三 基本语法

{
    ...
    break
    ...
}

四 图解 break

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

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

2 示例

package main

import "fmt"

func main() {
   // 演示一下指定标签的形式来使用 break
label2:
   for i := 0; i < 4; i++ {
      // label1: // 设置一个标签
      for j := 0; j < 10; j++ {
         if j == 2 {
            // break // break 默认会跳出最近的for循环
            // break label1
            break label2 // j=0 j=1
         }
         fmt.Println("j=", j)
      }
   }
}

3 测试

j= 0
j= 1

4 说明

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

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

六 实战

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

a 代码

package main

import "fmt"

func main() {
   sum := 0
   for i := 1; i <= 100; i++ {
      sum += i // 求和
      if sum > 20 {
         fmt.Println("当sum>20时,当前数是", i)
         break
      }
   }
}

b 测试

当sum>20时,当前数是 6

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

a 代码

package main

import "fmt"

func main() {
   var name string
   var pwd string
   var loginChance = 3 //
   for i := 1; i <= 3; i++ {
      fmt.Println("请输入用户名")
      fmt.Scanln(&name)
      fmt.Println("请输入密码")
      fmt.Scanln(&pwd)
      if name == "小龙女" && pwd == "666" {
         fmt.Println("恭喜你登录成功!")
         break
      } else {
         loginChance--
         fmt.Printf("你还有%v次登录机会,请珍惜\n", loginChance)
      }
   }
   if loginChance == 0 {
      fmt.Println("机会用完,没有登录成功!")
   }
}

b 测试

请输入用户名
aaa
请输入密码
bbb
你还有2次登录机会,请珍惜
请输入用户名
小龙女
请输入密码
666
恭喜你登录成功!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值