Go---循环控制

for循环控制

基本语法
for 循环变量初始化;循环条件;循环变量迭代 {
   循环操作(语句)
}

for i := 1;i<=9;i++{

    fmt.Println("you are you are")

}

for循环执行的顺序
1)执行循环变量初始化,比如i = 1
2)执行循环条件。比如 i <= 9

3)如果循环条件为真,就执行循环操怍,比如fmt.Println("you are you are")
4)执行循环充量迭代.比如 i++
5)反复执行2.3.4 步骤,直到循环条件为False ,就跳出for循环。

注意事项和细节说明
1)循环条件是返回一个布尔值的表达式
2) for循环的第二种使用方式
for 循环判断条件 {
      //循环执行语句

}
变量初始化变量迭代写到其它位置

j := 1

for j <= 9{

    fmt.Println("you are you are")

    j++

}

3) for循环的第 种使用方式
for {
//循环执行语句

}
上面的写法等价for ; ;{ } 是一个无限循环,通常需要配合break语句使用。

4) Golang 提供for-range的方式,可以方便遍历字符串和数组

var str string = "you are"

for index,val := range str {

fmt.Printf("index=%d,val=%c \n",index,val)

}

如果我们的字符串含有中文,那么传统的遍历字符串方式,就是错误,会出现乱码。原区是传统的对字符串的遍历是按照字节来遍历,而一个汉字在utf-8编码是对应3个字节。

var str string  = " I'am 成都"

str2 := []rune(str)

for i := 0; i < len(str2); i++ {

  fmt.Printf("%c \n",str2[i])

}

练习

var count int = 0

var sum int = 0

for i := 1;i <= 100 ;i++ {

    if i % 9 ==0{

        count++

        sum +=i

    }

}

fmt.Printf("count=%v sum=%v \n",count,sum)

while和do...while的实现
Go语言
没有while和do...while语法,可以通过for循环来实现其使用效果。

for循环实现while的效果

循环变量初始化
for{
   if 循环条件表达式 {

           break //跳出for循环

    }
循环操作(语句)

循环变量迭代

}

for循环实现do...while的效果

循环变量初始化

for{
  循环操作(语句)

  循环变量迭代
if  循环条件表达式  {

break//跳出for循环.. 

}

}

练习

//统计3个班成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分[学生的成绩从键盘输入

var classNum int = 3

var studentNum int = 5

var totalSum float64 = 0.0

for j := 1 ; j <= classNum ;j++{

  sum := 0.0

  for i :=1; i <= studentNum; i++ {

    var score float64 = 0.0

    fmt.Printf("请输入第%d班级,第%d同学的成绩 \n",j,i)

    fmt.Scanln(&score)

    sum += score

  }

  fmt.Printf("第%d班级,班级平均成绩为%v \n",j,sum/float64(studentNum))

   totalSum += sum

}

fmt.Printf("班级总成绩%v,所有班级平均成绩为%v \n",totalSum,totalSum/float64(studentNum))

//使用for循环完成下面的案例请编写一个程序,可以接收一个整数,表示层数,打印出空心金字塔

var totalLevel int = 6

for i := 1; i <=totalLevel ;i++ {

    //在打印*前先打印空格

    for k := 1; k<=totalLevel-i; k++{

        fmt.Print(" ")

    }

    for j := 1; j <= 2*i - 1; j++ {

        //每层的第一个和最后一个是打印* ,最后一行不变

        if j==1 || j == 2*i-1 || i== totalLevel{

            fmt.Print("*")

        }else{

            fmt.Print(" ")

        }

       

    }

    fmt.Println()

}

//九九乘法表

//i:层数

for i:=1;i<=9;i++ {

    for j := 1; j<=i;j++ {

        fmt.Printf("%v * %v = %v \t",j,i,j*i)

    }

    fmt.Println()

}

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

package main

import (

    "fmt"

    "math/rand"

    "time"

)

func main() {

    var count int =0

    for{

     //time.Now().unix():返回一个从1970:01:01的e时e分o秒到现在的秒数

      rand.Seed(time.Now().UnixNano())

     //如何随机的生成1-100整数

      ra := rand.Intn(100) +1 //[0, 100)

      fmt.Println(ra)

      count ++

      if ra == 99{

        break

      }

    }

    fmt.Println("生成99一共使用了",count)

}

注意事项和细节说明:
1)break语句出现在多层嵌套的语句块中时,可以通过标签指明要终收的是哪一层语句块

 2)标签的基本使用

//指定标签的形式来使用break

lable2:

for i := 0;i<4;i++{

    //lablel1: //设置一个标签

    for j :=0;j<10;j++{

        if j==2 {

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

            //break lablel1

            break lable2

        }

        fmt.Println("j=",j)

    }

}

跳转控制语句-continue

1) continue语句用于结束本次循环,继续执行下一次循环。
2) continue语句 出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环,这个和前面的标签的使用的规则一样。

here:

for i := 0;i<4;i++{

    //lablel1: //设置一个标签

    for j :=0;j<10;j++{

        if j==2 {

            continue here

        }

        fmt.Println("j=",j)

    }

}

跳转控制语句-goto
1) Go语言的goto语句可以无条件地转移到程序中指定的行。
2) goto语句通常与条件语句配合使用。可用来实现条件转移,跳出循环体等功能。
3) 在Go程序设计中
一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。

//goto的使用

fmt.Println("one")

goto lablel1

fmt.Println("two")

fmt.Println("three")

lablel1:

fmt.Println("four")

fmt.Println("five")

跳转控制语句-return
return 使用在方法或者函数中,表示跳出所在的方法或函数。

1)如果reum是在普通的函数,则表示跳出该函数,即不再执行函数中retum后面代码,也可以
理解成终止函数。
2)如果retum是在main函数,表示終止main函数,也就是说终止程序。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值