一、程序的流程结构

程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。

顺序结构:代码从上向下逐行的执行

选择结构:条件满足,某些代码才会被执行。0-1次

​ if语句,switch语句

循环结构:条件满足,某些代码会被反复的多次执行。0-n次

​ for语句

二、循环语句

循环语句表示条件满足,可以反复的执行某段代码。

for是唯一的循环语句。(Go没有while循环)

2.1 For语句

语法结构:

for init; condition; post { }

初始化语句只执行一次。在初始化循环之后,将检查该条件。如果条件计算为true,那么{}中的循环体将被执行,然后是post语句。post语句将在循环的每次成功迭代之后执行。在执行post语句之后,该条件将被重新检查。如果它是正确的,循环将继续执行,否则循环终止。

示例代码:

package main

import (  
    "fmt"
)

func main() {
    for i := 1; i <= 10; i++ {
        fmt.Printf(" %d",i)
    }
}

在for循环中声明的变量仅在循环范围内可用。因此,i不能在外部访问循环。

所有的三个组成部分,即初始化、条件和post都是可选的。

for condition { }

效果与while相似

for { }

效果与for(;;) 一样

for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环

for key, value := range oldMap {
    newMap[key] = value
}
package main

import "fmt"

func main() {

    var b int = 15
    var a int

    numbers := [6]int{1, 2, 3, 5} 

    /* for 循环 */
    for a := 0; a < 10; a++ {
        fmt.Printf("a 的值为: %d\n", a)
    }

    for a < b {
        a++
        fmt.Printf("a 的值为: %d\n", a)
    }

    for i,x:= range numbers {
        fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
    }   
}

运行结果:

a 的值为: 0
a 的值为: 1
a 的值为: 2
a 的值为: 3
a 的值为: 4
a 的值为: 5
a 的值为: 6
a 的值为: 7
a 的值为: 8
a 的值为: 9
a 的值为: 1
a 的值为: 2
a 的值为: 3
a 的值为: 4
a 的值为: 5
a 的值为: 6
a 的值为: 7
a 的值为: 8
a 的值为: 9
a 的值为: 10
a 的值为: 11
a 的值为: 12
a 的值为: 13
a 的值为: 14
a 的值为: 15
第 0 位 x 的值 = 1
第 1 位 x 的值 = 2
第 2 位 x 的值 = 3
第 3 位 x 的值 = 5
第 4 位 x 的值 = 0
第 5 位 x 的值 = 0

2.2 多层for循环以及相关循环的例子

for循环中又有循环嵌套,就表示多层循环了。

  • 示例1
package main

import "fmt"

func main() {
    /*
    循环嵌套:多层循环嵌套在一起

    题目一:
    *****
    *****
    *****
    *****
    *****

    Print()
    Printf()
    Println()

    题目二:
    1X1=1
    2X1=2 2X2=4
    3X1=3 3X2=6 3X3=9
    ...
    9X1=9 9X2=18 9X3=27...9X9=81
     */
    //第一行
    //1.打印*
    //for j := 0; j < 5; j++ {
    //
    //  fmt.Print("*") // j:0,1,2,3,4
    //}
    ////2.换行
    //fmt.Println()

    ////第二行
    //for j := 0; j < 5; j++ {
    //
    //  fmt.Print("*") // j:0,1,2,3,4
    //}
    ////2.换行
    //fmt.Println()

    for i := 1; i <= 5; i++ { //1,2,3,4,5
        for j := 0; j < 5; j++ {

            fmt.Print("*") // j:0,1,2,3,4
        }
        //2.换行
        fmt.Println()
    }
}

  • for …… break …… continue 示例
package main

import "fmt"

func main() {
    /*
        循环结束:
            循环条件不满足,循环自动结束了
            但是可以通过break和continue来强制的结束循环

    循环控制语句
    break:彻底的结束循环。。终止
    continue:结束了某一次循环,下次继续。。中止


    注意点:多层循环嵌套,break和continue,默认结束的是里层循环
        如果想结束指定的某个循环,可以给循环贴标签(起名)。
            break 循环标签名
            continue 循环标签名
¡
     */

    for i := 1; i <= 10; i++ {
        if i == 5{
            //break
            continue
        }
        fmt.Println(i)
    }

    fmt.Println("-----------------------")
    out:for i:=1;i<=5;i++{
        for j:=1;j<=5;j++{
            if j == 2{
                break out
                //continue out
            }
            fmt.Printf("i:%d,j:%d\n",i,j)
        }
    }

    fmt.Println("main..over....")
}

  • for循环练习题
package main

import "fmt"

func main() {
    /*
    for循环的练习题:
    练习1:打印58-23数字
    练习2:求1-100的和
        sum := 0
        sum = +1+2+3+4...+100
    sum = sum + 1
    sum = sum + 2
    sum = sum + 3
    ...
    sum = sum + 100

    练习3:打印1-100内,能够被3整除,但是不能被5整除的数字,统计被打印的数字的个数,每行打印5个
     */
    for i := 58; i >= 23; i-- {
        fmt.Println(i) // 58,57,56...23
    }

    fmt.Println("------------------")
    sum := 0

    for i := 1;i <= 100;i++{
        sum += i // i : 1,2,3,4..100
    }
    fmt.Println("1-100的和:",sum)

    fmt.Println("-----------------")
    count := 0 //计数器
    for i := 1;i <= 100;i++{
        if i % 3 == 0 && i % 5 != 0{
            fmt.Print(i,"\t")
            count++ //5, 10, 15, 20..
            if count % 5 == 0{
                fmt.Println()
            }
        }
    }
    fmt.Println()
    fmt.Println("count-->",count)
}

三、跳出循环的语句

1、 break语句

break:跳出循环体。break语句用于在结束其正常执行之前突然终止for循环

示例代码:

package main

import (  
    "fmt"
)

func main() {  
    for i := 1; i <= 10; i++ {
        if i > 5 {
            break //loop is terminated if i > 5
        }
        fmt.Printf("%d ", i)
    }
    fmt.Printf("\nline after for loop")
}

2、continue语句

continue:跳出一次循环。continue语句用于跳过for循环的当前迭代。在continue语句后面的for循环中的所有代码将不会在当前迭代中执行。循环将继续到下一个迭代。

示例代码:

package main

import (  
    "fmt"
)

func main() {  
    for i := 1; i <= 10; i++ {
        if i%2 == 0 {
            continue
        }
        fmt.Printf("%d ", i)
    }
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。