Golang|for

for 循環

循環在全部語句最基礎的結構,在Go語言中也不例外,可是在Go語言中,只有一種循環結果,沒有 do-while 結構的循環,while 結構的循環被 for {} 代替。
Go語言中,for循環也因些變的更加的靈活,更加的好用。code

跟據條件判斷的 for 循環

無初始化

func main() {
        i := 1
        for i < 5 {
            i++
            fmt.Println("i = ", i)
        }
    }

Go語言中,if 語句,for 語句,switch 語句後面的條件判斷都不用加 ( ) ,直接寫判斷條件就能夠,這也是Go語言簡單的一點。排序

沒有初始化的意思就是初始化定義在 for 循環外面,而且處境語句也不和條件判斷在同一行。作用域

有初始化

func main() {
        for i := 10; i < 0; i-- {
            fmt.Println("i = ", i)
        }
    }

和無初始化的 for 循環相比,這一種更加的簡潔,可是這兩種結構也說不出誰好誰壞,都有本身的特定場景,好比無初始化的,它其中的變量 i 就能夠在其它地方使用,可是有初始化的這個 for 循環不行,它只能在循環的做用域內使用。it

無限循環

func main() {
        i := 0
        for {
            fmt.Println("i = ", i)
            if i == 10{
                break	// 跳出循環結構
            }
            i++
        }
    }

在使用無限循環時,必需要注意的一點就是,必定要有結束條件,否則在運行的時候,必定會報錯。class

無限循環就是 for 沒有任務條件,直接運行。基礎

嵌套循環

嵌套循環就是在一個 for 循環裏面,嵌套別一個 for 循環,最經典的就是 冒泡排序 了。變量

func main() {
        arr := []int{5, 8, 9, 6, 7, 4, 3, 0, 2, 1}
        // 冒泡排序
        for i := 0; i < len(arr)-1; i++ {
            for j := 0; j < len(arr)-i-1; j++ {
                if arr[j] > arr[j+1] {  // 大於號,正序排列,小於號,倒序排例
                    arr[j], arr[j+1] = arr[j+1], arr[j]
                }
            }
        }
        fmt.Println(arr)
    }

for-range

func main() {
        arr := []int{5, 8, 9, 6, 7, 4, 3, 0, 2, 1}
        for k, v := range arr {
            fmt.Printf("下標爲:%d,值爲:%d\n", k, v)
        }
        //下標爲:0,值爲:5
        //下標爲:1,值爲:8
        //下標爲:2,值爲:9
        //下標爲:3,值爲:6
        //下標爲:4,值爲:7
        //下標爲:5,值爲:4
        //下標爲:6,值爲:3
        //下標爲:7,值爲:0
        //下標爲:8,值爲:2
        //下標爲:9,值爲:1
    }

for-range 循環就是一種Go語言的語法糖,它其實和普通的 for 循環同樣,就是方便了使用纔出現的。循環

for 循環的控制語句

循環控制語句就是在循環中,控制循環的執行順序,執行過程。最經常使用的有兩個 breakcontinue語法

break

break 的做用是跳出本層循環,好比,在嵌套循環中,有兩層循環,內層只有一個 break 語句,那麼執行後,只會結束一層循環,剩下的繼續執行。語言

func main() {
        for i := 0; i < 5; i++ {
            for j := 0; j < 5; j++ {
                if j == 3 {
                    break // 跳出本層循環,進入到外層循環
                }
                fmt.Println("j = ", j)
            }
        }
    }

continue

continue 的做用是跳過本次循環,只要遇到 continue 後,它以後的全部語句都不執行了,循環體內直接執行完,執行下一次循環。

func main() {
        for i := 0; i < 5; i++ {
            if i == 3 {
                continue
            }
            fmt.Println("i = ", i)
        }
        // 結果: 1,2,4
    }

在上面的例子中,當知足 if 條件時,直接跳過執行這一次的打印,直接開始了下一次的打印。



細節決定成敗!
我的愚見,若有不對,懇請扶正!

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息