• GoLang学习控制语句之for


    for结构简介

    Go语言只有for循环这一种循环结构,Go语言中的for循环语句的三个部分不需要用括号括起来,但循环体必须用 { } 括起来。基本的for循环包含三个由分号分开的组成部分:

    • 初始化语句:在第一次循环执行前被执行
    • 循环条件表达式:每轮迭代开始前被求值
    • 后置语句:每轮迭代后被执行

    初始化语句一般是一个短变量声明,这里声明的变量仅在整个 for 循环语句可见。如果条件表达式的值变为 false,那么迭代将终止。

    基于计数器的for循环

    基于计数器的迭代,基本形式为:

    for 初始化语句; 条件语句; 修饰语句 {
        //循环语句
    }
    

    我们用for循环来计算100以内正整数的和。

    package main
    import "fmt"
    func main(){
    	sum := 0
    	for i:=1;i<100;i++{
    		sum += i	
    	}
    	fmt.Println(sum)
    }
    

    由花括号括起来的代码块会被重复执行已知次数,该次数是根据计数器(此例为 i)决定的。循环开始前,会执行且仅会执行一次初始化语句 i := 1;,这比在循环之前声明更为简短。紧接着的是条件语句 i < 100;,在每次循环开始前都会进行判断,一旦判断结果为 false,则退出循环体。最后一部分为修饰语句 i++,一般用于增加或减少计数器。

    这三部分组成的循环的头部,它们之间使用分号 ; 相隔,但并不需要括号 () 将它们括起来。例如:

    for (i = 0; i < 10; i++) { } //非法代码!
    

    和if-else语句类似,for循环中左花括号{必须和 for 语句在同一行,计数器的生命周期在遇到右花括号} 时便终止

    基于条件判断的for循环

    for 循环的第二种形式是没有头部的条件判断(类似其它语言中的 while 循环),基本形式为:

    for 条件语句 {}
    

    也可以认为这是没有初始化语句和修饰语句的 for 结构,因此 ;;便是多余的了。我们来写一个基于条件判断的简单for循环,示例代码如下:

    package main
    import "fmt"
    func main() {
        var i int = 5
        for i >= 0 {
            i = i - 1
            fmt.Printf("The variable i is now: %d
    ", i)
        }
    }
    

    for-range结构

    提到for循环,我们必须再提一下range()这个内置函数,这是 Go 语言特有的一种的迭代结构,它一般用来遍历数组,slice和map等集合。我们用range来遍历一个数组,以下代码会打印出每个值的序号和对应的值。

    package main
    
    import(
      "fmt"
      )
    
    func main() {
      arr := [...]int{6, 7, 8}
      for i, v := range arr {
            fmt.Println(i,v)
        }
    }
    

    无限循环

    Go 语言有以下几种无限循环:

    i:=0; ; i++   
    for { }       
    for ;; { }    
    for true { } 
    

    这些无限循环都是 for 循环的条件语句被省略了。如果 for 循环的头部没有条件语句,那么就会认为条件永远为 true。因此如果不想造成死循环,循环体内必须有相关的条件判断以确保会在某个时刻退出循环。

  • 相关阅读:
    如何优化数据库中数据的查询
    2句sql语句的比较
    未来五年程序员应当具备的十项技能
    中小IT企业如何留住80后技术人才
    ORACLE的sign函数和DECODE函数
    Windows Server 2008系统 安装Oracle 10g 错误
    ORACLE 错误 ora01830 解决方法
    oracle instr函数
    Oracle 9i安装时没有找到OCS4J.properties 解决办法
    C# 中的委托和事件
  • 原文地址:https://www.cnblogs.com/senlinyang/p/8869288.html
Copyright © 2020-2023  润新知