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

  

Tags: