1. 程式人生 > 其它 >Go 迴圈語句

Go 迴圈語句

Go 迴圈語句

 

一、概述

在不少實際問題中有許多具有規律性的重複操作,因此在程式中就需要重複執行某些語句。

迴圈程式的流程圖:

 

 

Go 語言提供了以下幾種型別迴圈處理語句:

迴圈型別 描述
for 迴圈 重複執行語句塊
迴圈巢狀 迴圈中巢狀一個或多個 for 迴圈


1. 迴圈控制語句
迴圈控制語句可以控制迴圈體內語句的執行過程。

GO 語言支援以下幾種迴圈控制語句:

控制語句 描述
break 語句 經常用於中斷當前 for 迴圈或跳出 switch 語句
continue 語句 跳過當前迴圈的剩餘語句,然後繼續進行下一輪迴圈。
goto 語句 將控制轉移到被標記的語句。


2. 無限迴圈
如果迴圈中條件語句永遠不為 false 則會進行無限迴圈,我們可以通過 for 迴圈語句中只設置一個條件表示式來執行無限迴圈:

示例

package main

import (
	"fmt"
	"time"
)

func main() {
	i := 0
	for true { 		//for後面true為可選,若不加,預設為true
		fmt.Printf("i: %v\n", i)
		i++
		time.Sleep(time.Second)
	}
}

//輸出結果如下
i: 0
i: 1
i: 2
i: 3
i: 4
i: 5
i: 6
i: 7
....
....
....

 

二、Go 語言 for 迴圈


1. 語法
for 迴圈是一個迴圈控制結構,可以執行指定次數的迴圈

語法:

//Go 語言的 For 迴圈有 3 種形式,只有其中的一種使用分號
//和 C 語言的 for 一樣:

for init; condition; post { }


//和 C 的 while 一樣:
for condition { }


//和 C 的 for(;;) 一樣:
for { }
  • init: 一般為賦值表示式,給控制變數賦初值
  • condition: 關係表示式或邏輯表示式,迴圈控制條件
  • post:一般為賦值表示式,給控制變數增量或減量。

 

2. for語句執行過程
① 先對錶達式 1 賦初值;

② 判別賦值表示式 init 是否滿足給定條件,若其值為真,滿足迴圈條件,則執行迴圈體內語句,然後執行 post,進入第二次迴圈,再判別 condition;否則判斷 condition 的值為假,不滿足條件,就終止for迴圈,執行迴圈體外語句。

for 迴圈的 range 格式可以對 slice、map、陣列、字串等進行迭代迴圈。
格式如下:

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


for 語句語法流程如下圖所示:

 

 

3. 示例
計算 1 到 10 的數字之和

package main

import "fmt"

func main() {
	sum := 0
	for i := 0; i <= 10; i++ {
		sum += i
	}
	fmt.Printf("sum: %v\n", sum)
}

//輸出結果為:
55

-----------------------------------------------------------------------------------------------
//int 和 post 引數是可選的,我們可以直接省略他,型別while語句

package main

import "fmt"

func main() {
	sum := 0
	i := 1
	for i <= 10 {
		sum += i
		i++
	}
	fmt.Printf("sum: %v\n", sum)
}

  

計算0-100間偶數的和

//求出0-100的偶數和

package main

import "fmt"

func main() {
	a := 0
	for i := 1; i <= 100; i++ {
		if i%2 == 0 {
			a += i
		}
	}
	fmt.Printf("a: %v\n", a)
}

//輸出結果如下
2550

--------------------------------------------------------------------------------------------
//方法二
package main

import "fmt"

func main() {
	sum := 0
	for i := 0; i <= 100; i += 2 {
		sum += i
	}
	fmt.Printf("sum: %v\n", sum)
}

  

4. For-each range 迴圈
這種格式的迴圈可以對字串、陣列、切片等進行迭代輸出元素

示例

//迴圈陣列
package main

import "fmt"

func main() {
	names := []int{20, 30, 40, 50, 60}
	//a獲取key,b獲取value
	for a, b := range names {
		fmt.Print("key:", a, "  value:", b, "\n")
	}
}

//輸出結果如下
key:0  value:20
key:1  value:30
key:2  value:40
key:3  value:50
key:4  value:60

  

//使用空白識別符號直接獲取value
package main

import "fmt"

func main() {
	names := []int{20, 30, 40, 50, 60}
	//a獲取key,b獲取value
	for _, b := range names {
		fmt.Print("value:", b, "\n")
	}
}

//輸出結果
value:20
value:30
value:40
value:50
value:60