1. 程式人生 > 其它 >5、golang-流程控制語句

5、golang-流程控制語句

 99乘法表:

func chengfabiao() {
	var chengJi int
	for i := 1; i < 10; i++ {
		for j := 1; j <= i; j++ {
			chengJi = i * j
			fmt.Printf("%d * %d = %d  ", i, j, chengJi)
		}
		fmt.Println()
	}
}

Range

Go 語言中 range 關鍵字用於 for 迴圈中迭代陣列(array)、切片(slice)、通道(channel)或集合(map)的元素。在陣列和切片中它返回元素的索引和索引對應的值,在集合中返回 key-value 對。

  1. 陣列、切片、字串返回索引和值。
  2. map返回鍵和值。
  3. 通道(channel)只返回通道內的值。

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

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

以上程式碼中的 key 和 value 是可以省略。

如果只想讀取 key,格式如下:

for key := range oldMap

或者這樣:

for key, _ := range oldMap

如果只想讀取 value,格式如下:

for _, value := range oldMap

 

goto(跳轉到指定標籤)

goto語句通過標籤進行程式碼間的無條件跳轉。goto語句可以在快速跳出迴圈、避免重複退出上有一定的幫助。Go語言中使用goto語句能簡化一些程式碼的實現過程。 例如雙層巢狀的for迴圈要退出時:


func gotoDemo1() {
	var breakFlag bool
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				// 設定退出標籤
				breakFlag = true
				break
			}
			fmt.Printf("%v-%v\n", i, j)
		}
		// 外層for迴圈判斷
		if breakFlag {
			break
		}
	}
}

func gotoDemo2() {
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				// 設定退出標籤
				goto breakTag
			}
			fmt.Printf("%v-%v\n", i, j)
		}
	}
	return
	// 標籤
breakTag:
	fmt.Println("結束for迴圈")
}

 

break(跳出迴圈)

break語句還可以在語句後面新增標籤,表示退出某個標籤對應的程式碼塊,標籤要求必須定義在對應的forswitch和 select的程式碼塊上。 舉個例子:

func breakDemo1() {
BREAKDEMO1:
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				break BREAKDEMO1
			}
			fmt.Printf("%v-%v\n", i, j)
		}
	}
	fmt.Println("...")
}

 

continue(繼續下次迴圈)

在 continue語句後新增標籤時,表示開始標籤對應的迴圈。例如:

func continueDemo() {
forloop1:
	for i := 0; i < 5; i++ {
		// forloop2:
		for j := 0; j < 5; j++ {
			if i == 2 && j == 2 {
				continue forloop1
			}
			fmt.Printf("%v-%v\n", i, j)
		}
	}
}

參考連結:

https://www.liwenzhou.com/posts/Go/04_basic/

https://blog.csdn.net/weixin_44178736/article/details/119308650 

https://www.runoob.com/go/go-range.html