探索 Go 語言的流程控制

更新於 2023/08/23閱讀時間約 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
17會員
83內容數
golang
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Alan的開發者天地 的其他內容
👨‍💻簡介 本文快速介紹了 Go 語言中的各種運算符,從數學計算到邏輯判斷,包括自增自減、賦值、比較和位運算。透過實例和清晰的解釋,快速掌握如何在程式中運用這些運算符。
👨‍💻簡介 Go 語言有各種資料型別,分為基本型別和複合型別。基本型別包括: 整數、浮點數、布林值、字串 複合型別包括: 陣列、片段、結構、函式、對映、通道、介面 等。 整數型別 整數型別有許多種,像是 int8、int16、int32、int64。我們可以依據實際需求選擇。
👨‍💻簡介 在 Golang 中,你可以使用不同的方式來宣告變數和常數。宣告變數時,可以直接指定值,或者使用型別推導,更簡單地用 := 來宣告局部變數。另外,還可以一次宣告多個變數,相同型別的變數可以一起宣告,或者使用括號宣告不同型別的變數。常數則使用 const 關鍵字宣告,確保值不變
👨‍💻簡介 在這篇文章裡,會簡單介紹幾個關鍵的基本概念和語法結構,加快上手這門程式語言。
👨‍💻如何在go中驗證SSL憑證 因之前玩過監控證書,最近在接觸golang因此來看看有甚麼方法能夠取得憑證到期日,最後發現有crypto/tls這個module可以用,驗證步驟簡單三步如下
👨‍💻簡介 本文快速介紹了 Go 語言中的各種運算符,從數學計算到邏輯判斷,包括自增自減、賦值、比較和位運算。透過實例和清晰的解釋,快速掌握如何在程式中運用這些運算符。
👨‍💻簡介 Go 語言有各種資料型別,分為基本型別和複合型別。基本型別包括: 整數、浮點數、布林值、字串 複合型別包括: 陣列、片段、結構、函式、對映、通道、介面 等。 整數型別 整數型別有許多種,像是 int8、int16、int32、int64。我們可以依據實際需求選擇。
👨‍💻簡介 在 Golang 中,你可以使用不同的方式來宣告變數和常數。宣告變數時,可以直接指定值,或者使用型別推導,更簡單地用 := 來宣告局部變數。另外,還可以一次宣告多個變數,相同型別的變數可以一起宣告,或者使用括號宣告不同型別的變數。常數則使用 const 關鍵字宣告,確保值不變
👨‍💻簡介 在這篇文章裡,會簡單介紹幾個關鍵的基本概念和語法結構,加快上手這門程式語言。
👨‍💻如何在go中驗證SSL憑證 因之前玩過監控證書,最近在接觸golang因此來看看有甚麼方法能夠取得憑證到期日,最後發現有crypto/tls這個module可以用,驗證步驟簡單三步如下
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
燒烤肉類是一種廣受歡迎的烹飪方式,它能讓肉質變得香嫩多汁。然而,你知道這種美味的背後涉及到一個有趣的化學過程嗎?在這篇文章中,我們將探索肉類燒烤時蛋白質的變性過程、化學機構以及相關的製作方式和口感變化。
Thumbnail
想知道法庭內不同顏色的法袍背後到底代表什麼嗎?這篇文章將帶你揭開法袍的神秘面紗!從明亮的紅色到低調的黑色,每種色彩都有其獨特的象徵意義與職務。這篇文章將告訴你不同顏色法袍的真正身份,讓你對法庭內的角色更有了解!
Thumbnail
每個人的內在都有一個宇宙,那裡儲藏著我們所有的生命旅程,就像是靈魂的資料庫,記載著旅程中的點點滴滴,其實也就是人們所稱的「潛意識」。 其實身為人類的我們,體內也彷彿是一個宇宙運行。像是身體內有著各種器官,器官、神經、細胞組成系統,就如同星系的運行,器官與器官之間會相互作用,
Thumbnail
近年來,Discord 的使用者也拓及各式各樣的族群——幣圈人也愛用——如果你想深入地探索 Web3 世界,絕對不容錯過這個渠道⋯⋯來以〈腦哥chill塊鏈〉DC 群逛逛吧!
Thumbnail
從畫原生三角圖與現在關係圖的過程中,會讓我們更加了解自己和伴侶、孩子,甚至是朋友、同事之間的關係型態,最重要的是,我們可以改變,可以重新學習,讓我們創造與發展和過去不同的關係,走向自己的幸福之路。
Thumbnail
一個好的自然語言模型,若出現了語言模型的 vocabulary set 未曾收錄的單字,語言模型就會產生 Out-of-Vocabulary (OOV)。 本文介紹 subword algorithms 介於 word-level 和 character-level 解決 OOV 的方法。
Thumbnail
想到屏東你想到什麼?我以前只會想到墾丁、恆春,還有以豬腳馳名的萬巒。 一年多前,青鳥書店在屏東市孫立人行館開了家南國青鳥,不少藝文活動也跑到屏東市舉辦,加上《穿越阿緱-在街區與回憶之間》的出版,更是觸發我對屏東市的好奇,這到底是什麼樣的地方?
Thumbnail
來自ZKM德國新媒體藝術中心的機器人實驗室之所以成立,起因於原本機器、機械主要用於工業生產,但他們將其帶入表演藝術中,讓機器人的角色有自主及創意的可能。「我們不創造新的機器人,而是運用現成的機器人進行創作。」
Thumbnail
本文介紹由 OpenAI 發表的強化學習中基準模型,並藉由國外軟體工程師所繪畫的生動動畫來做直覺式的強化學習介紹以及教學。在漫畫中,將會比較蒙地卡羅和 Advantage Actor Critic (A2C) 模擬方法的不同,並將強化學習中的基礎觀念融入漫畫中。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
燒烤肉類是一種廣受歡迎的烹飪方式,它能讓肉質變得香嫩多汁。然而,你知道這種美味的背後涉及到一個有趣的化學過程嗎?在這篇文章中,我們將探索肉類燒烤時蛋白質的變性過程、化學機構以及相關的製作方式和口感變化。
Thumbnail
想知道法庭內不同顏色的法袍背後到底代表什麼嗎?這篇文章將帶你揭開法袍的神秘面紗!從明亮的紅色到低調的黑色,每種色彩都有其獨特的象徵意義與職務。這篇文章將告訴你不同顏色法袍的真正身份,讓你對法庭內的角色更有了解!
Thumbnail
每個人的內在都有一個宇宙,那裡儲藏著我們所有的生命旅程,就像是靈魂的資料庫,記載著旅程中的點點滴滴,其實也就是人們所稱的「潛意識」。 其實身為人類的我們,體內也彷彿是一個宇宙運行。像是身體內有著各種器官,器官、神經、細胞組成系統,就如同星系的運行,器官與器官之間會相互作用,
Thumbnail
近年來,Discord 的使用者也拓及各式各樣的族群——幣圈人也愛用——如果你想深入地探索 Web3 世界,絕對不容錯過這個渠道⋯⋯來以〈腦哥chill塊鏈〉DC 群逛逛吧!
Thumbnail
從畫原生三角圖與現在關係圖的過程中,會讓我們更加了解自己和伴侶、孩子,甚至是朋友、同事之間的關係型態,最重要的是,我們可以改變,可以重新學習,讓我們創造與發展和過去不同的關係,走向自己的幸福之路。
Thumbnail
一個好的自然語言模型,若出現了語言模型的 vocabulary set 未曾收錄的單字,語言模型就會產生 Out-of-Vocabulary (OOV)。 本文介紹 subword algorithms 介於 word-level 和 character-level 解決 OOV 的方法。
Thumbnail
想到屏東你想到什麼?我以前只會想到墾丁、恆春,還有以豬腳馳名的萬巒。 一年多前,青鳥書店在屏東市孫立人行館開了家南國青鳥,不少藝文活動也跑到屏東市舉辦,加上《穿越阿緱-在街區與回憶之間》的出版,更是觸發我對屏東市的好奇,這到底是什麼樣的地方?
Thumbnail
來自ZKM德國新媒體藝術中心的機器人實驗室之所以成立,起因於原本機器、機械主要用於工業生產,但他們將其帶入表演藝術中,讓機器人的角色有自主及創意的可能。「我們不創造新的機器人,而是運用現成的機器人進行創作。」
Thumbnail
本文介紹由 OpenAI 發表的強化學習中基準模型,並藉由國外軟體工程師所繪畫的生動動畫來做直覺式的強化學習介紹以及教學。在漫畫中,將會比較蒙地卡羅和 Advantage Actor Critic (A2C) 模擬方法的不同,並將強化學習中的基礎觀念融入漫畫中。