Golang 是一種高效且現代的程式語言,其在流程控制方面提供了豐富的功能。本文將探討 Golang 中的流程控制結構,包括條件語句、循環語句和跳躍語句,以幫助讀者更好地理解和應用這些結構。
條件語句
Golang 中的條件語句包括 if 語句、switch 語句和 select 語句。
- if 語句
if 語句用於進行條件判斷,語法如下:
if condition { statement(s) } else if condition { statement(s) } else { statement(s) }
其中,condition 是條件表達式,用於判斷真假。如果條件為真,則執行 if 後面的語句區塊;否則,跳過該語句區塊並執行下一個語句。
如果 condition 後面有 else if 關鍵字,則依序判斷每個條件式,執行第一個為真的語句區塊。如果所有條件表達式都為假,則執行 else 後面的語句區塊。如果沒有 else 區塊,則條件為假時不執行任何語句。
以下是一個if 語句的範例:
package main import "fmt" func main() { var a int = 10 if a < 20 { fmt.Printf("a 小于 20 ") } fmt.Printf("a 的值为 : %d ", a) }
輸出結果:
a 小于 20 a 的值为 : 10
- switch 語句
switch 語句用於多條件判斷,語法如下:
switch expression { case value1: statement(s) case value2: statement(s) case value3: statement(s) default: statement(s) }
其中,expression 是一個表達式,用於匹配case 子句中的常數或變數。如果匹配成功,則執行對應的語句區塊;否則,跳過該語句區塊並執行下一個 case 子句(如果存在)。
如果所有 case 子句都未符合成功,則執行 default 後面的語句區塊。如果沒有 default 子句,則不執行任何語句。
以下是一個switch 語句的範例:
package main import "fmt" func main() { var grade string = "B" var marks int = 90 switch marks { case 90: grade = "A" case 80: grade = "B" case 60, 70: grade = "C" default: grade = "D" } switch { case grade == "A" : fmt.Printf("优秀! " ) case grade == "B", grade == "C" : fmt.Printf("良好 " ) case grade == "D" : fmt.Printf("及格 " ) case grade == "F": fmt.Printf("不及格 " ) default: fmt.Printf("差 " ) } fmt.Printf("你的等级是 %s ", grade ) }
輸出結果:
良好! 你的等级是 B
- select 語句
select { case communication clause 1: statement(s) case communication clause 2: statement(s) ............. default: statement(s) }其中,communication clause 指的是一個通道或一個帶有方向的通道操作,包括發送操作和接收操作。如果某個通道有資料可讀或可寫,則執行對應的語句區塊;否則,跳過該通道並執行下一個 communication clause。如果所有通道都沒有資料可讀或可寫,則執行 default 後面的語句區塊。 以下是一個select 語句的範例:
package main import "fmt" func fibonacci(c, quit chan int) { x, y := 0, 1 for { select { case c <- x: x, y = y, x+y case <-quit: fmt.Println("quit") return } } } func main() { c := make(chan int) quit := make(chan int) go func() { for i := 0; i < 10; i++ { fmt.Println(<-c) } quit <- 0 }() fibonacci(c, quit) }輸出結果:
0 1 1 2 3 5 8 13 21 34 quit迴圈語句Golang 中的迴圈語句包括for 語句和range 語句。
- for 語句
for init; condition; post { statement(s); }其中,init 用於何時開始循環,condition用於判斷循環是否繼續,post 用於控制循環變數的操作。 以下是一個for 語句的範例:
package main import "fmt" func main() { var b int = 15 var a int for i := 0; i < 10; i++ { fmt.Printf("i 的值为: %d ", i) } for a < b { a++ fmt.Printf("a 的值为: %d ", a) } }輸出結果:
i 的值为: 0 i 的值为: 1 i 的值为: 2 i 的值为: 3 i 的值为: 4 i 的值为: 5 i 的值为: 6 i 的值为: 7 i 的值为: 8 i 的值为: 9 a 的值为: 1 a 的值为: 2 a 的值为: 3 a 的值为: 4 a 的值为: 5 a 的值为: 6 a 的值为: 7 a 的值为: 8 a 的值为: 9 a 的值为: 10 a 的值为: 11 a 的值为: 12 a 的值为: 13 a 的值为: 14 a 的值为: 15
- range 語句
for key, value := range oldMap { newMap[key] = value }其中,key 和value 分別表示目前元素的鍵和值。 以下是一個range 語句的範例:
package main import "fmt" func main() { nums := []int{2, 3, 4} sum := 0 for _, num := range nums { sum += num } fmt.Println("sum:", sum) for i, num := range nums { if num == 3 { fmt.Println("index:", i) } } kvs := map[string]string{"a": "apple", "b": "banana"} for k, v := range kvs { fmt.Printf("%s -> %s ", k, v) } }輸出結果:
sum: 9 index: 1 a -> apple b -> banana跳轉語句Golang 中的跳轉語句包括break、continue和goto。
- break 語句
for i := 0; i < 10; i++ { if i == 5 { break } fmt.Printf("%d ", i) } fmt.Println()輸出結果:
0 1 2 3 4
- #continue 語句
for i := 0; i < 10; i++ { if i == 5 { continue } fmt.Printf("%d ", i) } fmt.Println()輸出結果:
0 1 2 3 4 6 7 8 9
- #goto 語句
goto label; ... label: statement其中,label 是一個識別符,statement 是執行語句。 以下是一個goto 語句的範例:
package main import "fmt" func main() { i := 0 Again: fmt.Printf("循环执行次数:%d ", i) i++ if i < 10 { goto Again } }輸出結果:
循环执行次数:0 循环执行次数:1 循环执行次数:2 循环执行次数:3 循环执行次数:4 循环执行次数:5 循环执行次数:6 循环执行次数:7 循环执行次数:8 循环执行次数:9總結Golang 中的流程控制結構包含條件語句、循環語句和跳轉語句。條件語句包括 if、switch 和 select 語句,用於進行單一條件或多條件判斷。迴圈語句包含 for 和 range 語句,用於迴圈執行一段程式碼或遍歷某個元素。跳轉語句包括 break、continue 和 goto 語句,用於中斷目前迴圈或無條件跳到某個標籤處執行。在實際程式設計中,需要根據需求靈活選擇合適的流程控制結構來實現程式碼邏輯。
以上是golang 流程控制的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Interfacesand -polymormormormormormingingoenhancecodereusanity和Maintainability.1)defineInterfaceSattherightabStractractionLevel.2)useInterInterFacesFordEffordExpentIndention.3)ProfileCodeTomeAgePerformancemacts。

initiTfunctioningOrunSautomation beforeTheMainFunctionToInitializePackages andSetUptheNvironment.it'susefulforsettingupglobalvariables,資源和performingOne-timesEtepaskSarpaskSacraskSacrastAscacrAssanyPackage.here'shere'shere'shere'shere'shodshowitworks:1)Itcanbebeusedinanananainapthecate,NotjustAckAckAptocakeo

接口組合在Go編程中通過將功能分解為小型、專注的接口來構建複雜抽象。 1)定義Reader、Writer和Closer接口。 2)通過組合這些接口創建如File和NetworkStream的複雜類型。 3)使用ProcessData函數展示如何處理這些組合接口。這種方法增強了代碼的靈活性、可測試性和可重用性,但需注意避免過度碎片化和組合複雜性。

initfunctionsingoareAutomationalCalledBeLedBeForeTheMainFunctionandAreuseFulforSetupButcomeWithChallenges.1)executiondorder:totiernitFunctionSrunIndIndefinitionorder,cancancapationSifsUsiseSiftheyDepplothother.2)測試:sterfunctionsmunctionsmunctionsMayInterfionsMayInterferfereWithTests,b

本文討論了GO中的數組和切片之間的差異,重點是尺寸,內存分配,功能傳遞和用法方案。陣列是固定尺寸的,分配的堆棧,而切片是動態的,通常是堆積的,並且更靈活。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Linux新版
SublimeText3 Linux最新版