• Go语言之Go 语言循环语句


    Go 语言循环语句

    Go 语言提供了以下几种类型循环处理语句:

    循环类型 描述
    for 循环 重复执行语句块
    循环嵌套 在 for 循环中嵌套一个或多个 for 循环

    循环控制语句

    循环控制语句可以控制循环体内语句的执行过程。

    GO 语言支持以下几种循环控制语句:

    控制语句 描述
    break 语句 经常用于中断当前 for 循环或跳出 switch 语句
    continue 语句 跳过当前循环的剩余语句,然后继续进行下一轮循环。
    goto 语句 将控制转移到被标记的语句。

    计算1 到 10 的数字之和:

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

    输出结果为:

    55
    

    init 和 post 参数是可选的,我们可以直接省略它,类似 While 语句。

    以下实例在 sum 小于 10 的时候计算 sum 自相加后的值:

    **package** main
    
    **import** "fmt"
    
    func main() {
            sum := 1
            **for** ; sum <= 10; {
                    sum += sum
            }
            fmt.Println(sum)
    
           // 这样写也可以,更像 While 语句形式*
            for sum <= 10{
                    sum += sum
           }
            fmt.Println(sum)
    }
    

    输出结果为:

    16
    16
    

    无限循环:

    package main
    
    import "fmt"
    
    func main() {
            sum := 0
            for {
                sum++ // 无限循环下去*
            }
            fmt.Println(sum) // 无法输出
    }
    

    要停止无限循环,可以在命令窗口按下ctrl-c

    For-each range 循环

    这种格式的循环可以对字符串、数组、切片等进行迭代输出元素。

    package main
    import "fmt"
    
    func main() {
            strings := []string{"google", "runoob"}
            for i, s := range strings {
                    fmt.Println(i, s)
            }
    
    
            numbers := [6]int{1, 2, 3, 5}
            for i,x:= range numbers {
                    fmt.Printf("第 %d 位 x 的值 = %d**
    **", i,x)
            }  
    }
    

    以上实例运行输出结果为:

    0 google
    1 runoob
    第 0 位 x 的值 = 1
    第 1 位 x 的值 = 2
    第 2 位 x 的值 = 3
    第 3 位 x 的值 = 5
    第 4 位 x 的值 = 0
    第 5 位 x 的值 = 0
    

    Go 语言的 goto 语句可以无条件地转移到过程中指定的行。

    goto 语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。

    但是,在结构化程序设计中一般不主张使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。

    goto 语法格式如下:

    goto label;
    ..
    .
    label: statement;
    

    在变量 a 等于 15 的时候跳过本次循环并回到循环的开始语句 LOOP 处

    func main() {
    	a := 10
    LOOP:
    	for a < 20 {
    		if a == 15 {
    			a++
    			goto LOOP
    		}
    		fmt.Println(a)
    		a++
    	}
    
    }
    
    
  • 相关阅读:
    无锁队列的实现
    C/C++语言中闭包的探究及比较
    Linus:利用二级指针删除单向链表
    Unix考古记:一个“遗失”的shell
    “C++的数组不支持多态”?
    Alan Cox:单向链表中prev指针的妙用
    二叉树迭代器算法
    C语言全局变量那些事儿
    数据即代码:元驱动编程
    C++模板”>>”编译问题与词法消歧设计
  • 原文地址:https://www.cnblogs.com/heych/p/12577655.html
Copyright © 2020-2023  润新知