探索 Go 語言的流程控制

更新於 發佈於 閱讀時間約 7 分鐘


raw-image

👨‍💻簡介

本文簡單介紹了 Go 語言的流程控制概念,涵蓋了從條件語句到迴圈,再到 range 遍歷數據結構,以及 goto 與標籤 label 的應用。主要知識點為如何使用 if 語句進行條件判斷,以及在不同情況下運用 switch 語句。此外,還探討了 for 迴圈和 range 的運用,以及在特定情境下使用 goto 與 label。

條件語句

在 Go 語言中,我們可以使用條件語句來根據不同的條件執行不同的程式碼塊。常見的條件語句包括:

if 語句

if 語句用來檢查一個條件是否成立,如果條件為真,就執行相關的程式碼塊。例如:

age := 18
if age >= 18 {
fmt.Println("你已成年")
} else {
fmt.Println("你還未成年")
}

我們也可以使用 else if 分支處理多種情況:

age := 25

if age < 18 {
fmt.Println("你還未成年")
} else if age >= 18 && age < 60 {
fmt.Println("你已成年,但尚未退休")
} else {
fmt.Println("你已退休")
}

我們甚至可以在 if 語句中宣告並初始化一個變數,然後根據條件進行判斷:

if num2 := 10; num2 >= 10 {
fmt.Println("變數 num2 大於等於 10")
}

switch 語句

switch 語句用來根據不同的值進行不同的處理。我們可以使用 switch 來避免多個 if 判斷。例如:

day := "Sunday"
switch day {
case "Monday":
fmt.Println("星期一")
case "Tuesday":
fmt.Println("星期二")
case "Sunday":
fmt.Println("星期天")
default:
fmt.Println("其他天")
}

我們也可以在 switch 語句中宣告並初始化一個變數,然後根據其值進行判斷:

switch day := "Sunday"; day {
case "Monday":
fmt.Println("星期一")
case "Tuesday":
fmt.Println("星期二")
case "Sunday":
fmt.Println("星期天")
default:
fmt.Println("其他天")
}

我們甚至可以在 case 中處理多個值,共用相同的程式碼塊,例如:

day := "Saturday"

switch day {
case "Monday", "Tuesday", "Wednesday", "Thursday", "Friday":
fmt.Println("工作日")
case "Saturday", "Sunday":
fmt.Println("週末")
default:
fmt.Println("其他")
}

迴圈

迴圈是一種重複執行程式碼塊的結構。Go 語言提供了幾種迴圈方式:

for 迴圈

for 迴圈用來重複執行一段程式碼塊,可以指定初始值、條件和遞增方式。例如:

for i := 0; i < 5; i++ {
fmt.Println(i)
}

while 迴圈

Go 語言中沒有 while 關鍵字,但我們可以使用 for 迴圈來實現類似的功能:

num := 0
for num < 5 {
fmt.Println(num)
num++
}

無限迴圈

我們可以使用 for 迴圈來創建無限迴圈,例如:

for {
fmt.Println("無限迴圈")
}

使用 range 遍歷數據結構

除了上述的迴圈方式外,我們還可以使用 range 關鍵字來遍歷數組、切片、字串、映射等數據結構。例如:

numbers := []int{1, 2, 3, 4, 5}
for index, value := range numbers {
fmt.Printf("索引 %d 的值為 %d\n", index, value)
}

word := "Hello"
for index, char := range word {
fmt.Printf("索引 %d 的字符為 %c\n", index, char)
}

跳出與繼續

在迴圈中,我們可以使用 break 來提前結束迴圈,使用 continue 來跳過本次迭代,繼續下一次迭代。

for i := 0; i < 5; i++ {
if i == 2 {
continue // 跳過本次迭代,繼續下一次迭代
}
if i == 4 {
break // 提前結束迴圈
}
fmt.Println(i)
}

跳轉語句 goto

在某些情況下,我們可能需要使用 goto 來直接跳轉到程式碼中的指定標籤位置。然而,goto 往往會讓程式碼變得複雜且難以理解,因此在實際開發中應謹慎使用。

func main() {
i := 0
Loop:
fmt.Println(i)
i++
if i < 5 {
goto Loop
}
}

標籤 label

label 是一種用於標記程式碼位置的方式,通常與 goto 一起使用。較少使用 label 和 goto 的程式碼更容易閱讀和維護。以下是一個使用 label 和 goto 的範例:

func main() {
outer := 0
LoopOuter:
for outer < 3 {
inner := 0
LoopInner:
for inner < 3 {
fmt.Printf("外部迴圈:%d,內部迴圈:%d\n", outer, inner)
inner++
goto LoopInner
}
outer++
goto LoopOuter
}
}

注意事項

  • 在使用條件語句時,確保清楚地理解不同分支的執行情況,避免邏輯錯誤。
  • 在使用迴圈時,謹記設定適當的終止條件,以免陷入無限迴圈。

📚Reference

留言
avatar-img
留言分享你的想法!
avatar-img
Alan的開發者天地
18會員
83內容數
golang
Alan的開發者天地的其他內容
2023/10/04
👨‍💻 簡介 最近想要透過小實作來撰寫筆記,達到做中學的效果,因此就來實作個小爬蟲順便結合前面學到的package做一個小複習。
Thumbnail
2023/10/04
👨‍💻 簡介 最近想要透過小實作來撰寫筆記,達到做中學的效果,因此就來實作個小爬蟲順便結合前面學到的package做一個小複習。
Thumbnail
2023/09/28
👨‍💻簡介 今天來介紹一個自己開發後端蠻常用的一個 package,promptui,拿來做menu真的很方便,promptui有兩個主要的輸入模式: Prompt:跳出單行使用者輸入。 Select:提供一個選項列表供使用者選擇。
Thumbnail
2023/09/28
👨‍💻簡介 今天來介紹一個自己開發後端蠻常用的一個 package,promptui,拿來做menu真的很方便,promptui有兩個主要的輸入模式: Prompt:跳出單行使用者輸入。 Select:提供一個選項列表供使用者選擇。
Thumbnail
2023/09/26
👨‍💻 簡介 在處理string時,正則表達式是一個非常有用的工具。Go語言的regexp package 可以使用正則表達式,用來執行如檢查string是否匹配某個模式、提取匹配的subString等操作。
Thumbnail
2023/09/26
👨‍💻 簡介 在處理string時,正則表達式是一個非常有用的工具。Go語言的regexp package 可以使用正則表達式,用來執行如檢查string是否匹配某個模式、提取匹配的subString等操作。
Thumbnail
看更多
你可能也想看
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
本章節主要介紹了JavaScript中的流程控制,包括條件語句(如if、else if、else和三元運算子)和循環結構(如for迴圈、while迴圈等)。同時,也提供了如何使用break、continue和label來控制迴圈的執行。
Thumbnail
本章節主要介紹了JavaScript中的流程控制,包括條件語句(如if、else if、else和三元運算子)和循環結構(如for迴圈、while迴圈等)。同時,也提供了如何使用break、continue和label來控制迴圈的執行。
Thumbnail
本文是C#入門教程的一部分,涵蓋了流程控制的各種語句與迴圈。這包括if、else if和else語句,三元運算子,switch語句,以及for、foreach和while迴圈。文中還介紹了如何在迴圈中使用break、continue、return和goto語句。
Thumbnail
本文是C#入門教程的一部分,涵蓋了流程控制的各種語句與迴圈。這包括if、else if和else語句,三元運算子,switch語句,以及for、foreach和while迴圈。文中還介紹了如何在迴圈中使用break、continue、return和goto語句。
Thumbnail
本文介紹了Python中的流程控制,包括if, elif, else語句,三元運算子,for和while迴圈,以及控制迴圈語句如break、continue和pass。透過範例程式碼,說明了如何使用這些語句和結構進行條件判斷,迴圈遍歷和控制程式流程。
Thumbnail
本文介紹了Python中的流程控制,包括if, elif, else語句,三元運算子,for和while迴圈,以及控制迴圈語句如break、continue和pass。透過範例程式碼,說明了如何使用這些語句和結構進行條件判斷,迴圈遍歷和控制程式流程。
Thumbnail
👨‍💻簡介 本文簡單介紹了 Go 語言的流程控制概念,涵蓋了從條件語句到迴圈,再到 range 遍歷數據結構,以及 goto 與標籤 label 的應用。主要知識點為如何使用 if 語句進行條件判斷,以及在不同情況下運用 switch 語句。
Thumbnail
👨‍💻簡介 本文簡單介紹了 Go 語言的流程控制概念,涵蓋了從條件語句到迴圈,再到 range 遍歷數據結構,以及 goto 與標籤 label 的應用。主要知識點為如何使用 if 語句進行條件判斷,以及在不同情況下運用 switch 語句。
Thumbnail
👨‍💻簡介 在 Golang 中,你可以使用不同的方式來宣告變數和常數。宣告變數時,可以直接指定值,或者使用型別推導,更簡單地用 := 來宣告局部變數。另外,還可以一次宣告多個變數,相同型別的變數可以一起宣告,或者使用括號宣告不同型別的變數。常數則使用 const 關鍵字宣告,確保值不變
Thumbnail
👨‍💻簡介 在 Golang 中,你可以使用不同的方式來宣告變數和常數。宣告變數時,可以直接指定值,或者使用型別推導,更簡單地用 := 來宣告局部變數。另外,還可以一次宣告多個變數,相同型別的變數可以一起宣告,或者使用括號宣告不同型別的變數。常數則使用 const 關鍵字宣告,確保值不變
Thumbnail
介紹條件控制流程,包含組成它的比較運算子、條件運算式、條件語句。 繼講解完邏輯運算之後,我們終於要開始認識控制流程的其中之一:條件(Condition)。 如同在程式的邏輯思維中介紹到的,我們需要決定問題為 True 需要執行什麼,反之又要執行什麼。這些路徑的選擇便是由條件控制流程所實現。
Thumbnail
介紹條件控制流程,包含組成它的比較運算子、條件運算式、條件語句。 繼講解完邏輯運算之後,我們終於要開始認識控制流程的其中之一:條件(Condition)。 如同在程式的邏輯思維中介紹到的,我們需要決定問題為 True 需要執行什麼,反之又要執行什麼。這些路徑的選擇便是由條件控制流程所實現。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News