1. 程式人生 > 實用技巧 >【Golang】for case 迴圈使用者選擇

【Golang】for case 迴圈使用者選擇

語法點:

  1. for 迴圈 使用 case 函式,使用 break END 可以再輸入 exit 的時候退出,也可以用 return。

  2. Go語言也支援label(標籤)語法:分別是 break label 和 goto label,break label 和 goto label 都能在迴圈中跳出迴圈。

    • 2.1 break 的跳轉標籤 (label) 必須放在迴圈語句 for 前面,並且在 break label 跳出迴圈不再執行 for 迴圈裡的程式碼。如 案例一 所示;

      • 不能標籤定義在 break 的下面
      • break 標籤只能用於for迴圈;
    • 2.2 goto label 的 label (標籤)既可以定義在 for 迴圈前面(案例三),也可以定義在 for 迴圈後面(案例四),當跳轉到標籤地方時,繼續執行標籤下面的程式碼。

      • 但是由於在大專案中不好控制,所以建議能不使用goto label就不要使用;

      • label 在 for 前後位置不一樣,得到的退出結果也不一樣;

案例一:break label

package main

import "fmt"

func main() {
END:
	for {
		var text string
		fmt.Print("請輸入指令: ")
		fmt.Scan(&text)

		switch text {
		case "add":
			fmt.Println("新增")
		case "modify":
			fmt.Println("修改")
		case "delete":
			fmt.Println("刪除")
		case "query":
			fmt.Println("查詢")
		case "exit":
			fmt.Println("退出")
			break END
		default:
			fmt.Println("輸入指令錯誤")
		}
	}
}

案例二:return

package main

import "fmt"

func main() {
	for {
		var text string
		fmt.Print("請輸入指令: ")
		fmt.Scan(&text)

		switch text {
		case "add":
			fmt.Println("新增")
		case "modify":
			fmt.Println("修改")
		case "delete":
			fmt.Println("刪除")
		case "query":
			fmt.Println("查詢")
		case "exit":
			fmt.Println("退出")
			return
		default:
			fmt.Println("輸入指令錯誤")
		}
	}
}

案例一、二 的 Gif 動態圖展示:

案例三:goto ,for 迴圈前面

package main

import "fmt"

func main() {
	a := 1
END:
	for a < 10 {
		if a == 5 {
			a++
			goto END
		}
		fmt.Println(a)
		a++
	}
	fmt.Println(a)
}

案例四:goto,for 迴圈後面

package main

import "fmt"

func main() {
	a := 1
	for a < 5 {
		if a == 3 {
			a++
			goto END
		}
		fmt.Println(a)
		a++
	}
END:
	fmt.Println(a)
}