日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Go語言學習之循環語句使用詳解_Golang

作者:劍客阿良_ALiang ? 更新時間: 2022-06-15 編程語言

1、for循環

寫法基本和其他語言一致,只是沒有了while循環,用for代替while。

樣例代碼如下

// for循環
func loop1() {
    sum := 0
    for i := 0; i < 100; i++ {
        sum += i
    }
    fmt.Printf("sum = %d\n", sum)
 
    // 和while循環一樣
    sum1 := 3
    for sum1 <= 10 {
        sum1 += sum1
    }
    fmt.Printf("sum1 = %d\n", sum1)
}

執行結果

sum = 4950
sum1 = 12?

2、for-each語法

可以遍歷索引和值,和Python的enumrate類似。

樣例代碼如下

// for-each使用
func loop2() {
    strs := []string{"小王", "小明"}
    for i, str := range strs {
        fmt.Printf("%v今天第%d次去核酸\n", str, i)
    }
    nums := [6]int{1, 2, 4, 6}
    for i, num := range nums {
        fmt.Printf("%d - %d\n", i, num)
    }
}

執行結果

小王今天第0次去核酸 ?
小明今天第1次去核酸 ?
0 - 1 ? ? ? ? ? ? ? ?
1 - 2 ? ? ? ? ? ? ? ?
2 - 4 ? ? ? ? ? ? ? ?
3 - 6 ? ? ? ? ? ? ? ?
4 - 0 ? ? ? ? ? ? ? ?
5 - 0 ? ??

3、break的使用

和其他語言一樣,循環打斷關鍵字break。

樣例代碼如下

// break
func loop3() {
    var a int = 0
    var b int = 30
    for b > 0 {
        if a > 4 {
            break
        }
        a++
        b -= 3
    }
    fmt.Printf("a=%d,b=%d\n", a, b)
    var c int = 0
    var d int = 30
    for i := 0; i < 10; i++ {
        c++
        for j := 0; j < 10; j++ {
            if d < 0 {
                break
            }
            d--
        }
    }
    fmt.Printf("c=%d,d=%d\n", c, d)
    c = 0
    d = 30
loop1:
    for i := 0; i < 10; i++ {
        c++
        for j := 0; j < 10; j++ {
            if d < 0 {
                break loop1
            }
            d--
        }
    }
    fmt.Printf("c=%d,d=%d\n", c, d)
}

執行結果

a=5,b=15 ? ? ? ? ? ??
c=10,d=-1 ? ? ? ? ? ?
c=4,d=-1?

注意

1、和java一樣,在多重嵌套循環里面,如果不對循環做標識,break只會打斷最近的循環。

4、continue的使用

和break基本一致。

樣例代碼如下

// continue
func loop4() {
    var c int = 0
    var d int = 30
    for i := 0; i < 10; i++ {
        c++
        for j := 0; j < 10; j++ {
            d--
            if d < 0 {
                continue
            }
        }
    }
    fmt.Printf("c=%d,d=%d\n", c, d)
    c = 0
    d = 30
loop1:
    for i := 0; i < 10; i++ {
        c++
        for j := 0; j < 10; j++ {
            d--
            if d < 0 {
                continue loop1
            }
        }
    }
    fmt.Printf("c=%d,d=%d\n", c, d)
}

執行結果

c=10,d=-70 ? ? ? ? ??
c=10,d=-7 ?

5、goto的使用

goto是個有意思的關鍵字,可以無條件轉移到某一行,有點debug的味道。

樣例代碼如下

//goto
func loop5() {
    m := 0
loop1:
    for m < 20 {
        fmt.Printf("loop1 -> %d\n", m)
        if m > 3 {
            break loop1
        }
        i := 0
    loop2:
        for i < 10 {
            i++
            if i == 5 {
                goto loop2
            }
            fmt.Printf("loop2 -> %d\n", i)
        }
        m++
    }
 
}

執行結果

loop1 -> 0 ? ? ? ? ??
loop2 -> 1 ? ? ? ? ??
loop2 -> 2 ? ? ? ? ??
loop2 -> 3 ? ? ? ? ??
loop2 -> 4 ? ? ? ? ??
loop2 -> 6 ? ? ? ? ??
loop2 -> 7
loop2 -> 8
loop2 -> 9
loop2 -> 10
loop1 -> 1
loop2 -> 1
loop2 -> 2
loop2 -> 3
loop2 -> 4
loop2 -> 6
loop2 -> 7
loop2 -> 8
loop2 -> 9
loop2 -> 10
loop1 -> 2
loop2 -> 1
loop2 -> 2
loop2 -> 3
loop2 -> 4
loop2 -> 6
loop2 -> 7
loop2 -> 8
loop2 -> 9
loop2 -> 10
loop1 -> 3
loop2 -> 1
loop2 -> 2
loop2 -> 3
loop2 -> 4
loop2 -> 6
loop2 -> 7
loop2 -> 8
loop2 -> 9
loop2 -> 10
loop1 -> 4

注意

1、自己在測試的時候還是碰到點死循環的問題,要很好理解才能使用,不然比較容易死循環。

原文鏈接:https://blog.csdn.net/zhiweihongyan1/article/details/124188206

欄目分類
最近更新