• 程序流程控制3


    for 循环

    func main() {

      //输出10句 “您好,尚硅谷”

      for i := 1; i <=10; i++ {
        fmt.Println("您好,尚硅谷")
      }
    }


    基本语法:

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

    对上面的语法格式说明:
    1)对for循环来说,有四个要素
    2)循环变量初始化
    3)循环条件
    4)循环操作(语句),有人也叫循环体。
    5)循环变量迭代

    for循环执行的顺序说明:
    1)执行循环变量初始化,比如 i := 1
    2)执行循环条件,比如 i <= 10
    3)如果循环条件为真,就执行循环操作 : 比如 fmt.Println("...")
    4)执行循环变量迭代,比如 i++
    5)反复执行2、3、4步骤,直到循环条件为false时,就退出for循环

    注意事项和细节说明:

    1)循环条件是返回一个布尔值的表达式

    2)for循环的第二种使用方式
    for 循环判断条件 {
      //循环执行语句
    }

    将变量初始化和变量迭代写到其他位置

    func main() {

      //输出10句 “您好,尚硅谷”
      i := 1
      for i <=10 {
        fmt.Println("您好,尚硅谷")
        i++
      }
    }



    3)for循环的第三种使用方式
    for {
      //循环执行语句
    }
    上面的写法等价 for ; ; {} 是一个无限循环,通常需要配合break语句使用

    func main() {
      k := 1
      for {   //等价于 for ; ; {
        if k <= 10 {
          fmt.Println("ok")
        } else {
          break
        }
        k++
      }
    }

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

    注意:for-range在遍历字符串时,是按照字符来遍历的,而不是按照字节来的,请注意这点。


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

    如何解决: 需要将 str 转成 []rune 切片

    对应 for-range 遍历方式而言,是按照字符方式遍历。因此如果有字符串有中文,也是OK的。

    案例:

    1)打印1~100之间所有是9的倍数的整数的个数及总和


    func main() {

      //分析思路
      //1.使用for循环对 max 进行遍历
      //2.当一个数%9 == 0 就是9的倍数
      //3.我们需要声明两个变量 count 和 sum 来保存个数和总和
      var count int
      var sum int
      for i := 1; i <= 100; i++ {
        if i % 9 == 0 {
        count++
        sum += i
        }
      }
      fmt.Printf("count=%v sum=%v ", count, sum)
    }


    2)完成下面的表达式输出,6是可变的。

     

    func main() {

      var n int = 6
      for i := 0; i <= n; i++ {
        fmt.Printf("%v + %v = %v ", i, n - i, n)
      }
    }

    while 和  do..while

    Go语言没有while 和 do..while 语法,这一点需要注意。如果我们需要使用类似其他语言(比如 java / c 的 while 和 do..while ),可以通过for循环来实现其使用效果。

    1)for循环实现while的效果
    for {
      if 循环条件表达式 {
        break   //跳出for循环..
      }
      循环操作(语句)
      循环变量迭代
    }

    例子:

    func main() {
      var i int = 1
      for {
        if i > 10 {
          break
        }
        fmt.Println("hello, world", i)
        i++
      }
    }

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

    循环变量初始化
    for {
      循环操作(语句)
      循环变量迭代
      if 循环条件表达式 {
        break //跳出for循环..
      }
    }


    说明:

    1)上面的循环是先执行,在判断,因此至少执行一次。
    2)当循环条件成立后,就会执行break, break 就是跳出for循环,结束循环


    案例:

    func main() {

      var j int = 1
      for {
        fmt.Println("hello,ok", j)
        j++
        if j > 10 {
          break
        }
      }

    }

  • 相关阅读:
    javascritp学习笔记(四)----引用类型
    Bootstrap学习笔记(二)-----网格系统
    Javascript学习笔记(三)--变量、作用域和内存问题
    Javascript学习笔记(二)--创建对象(七种模式)
    Javascript学习笔记(一)--理解对象
    ReentrantLock
    synchronized使用
    多线程在web项目中的存在方式
    多线程基础
    java集合Map体系
  • 原文地址:https://www.cnblogs.com/green-frog-2019/p/11343423.html
Copyright © 2020-2023  润新知