Golang 是一種高效且現代的程式語言,其在流程控制方面提供了豐富的功能。本文將探討 Golang 中的流程控制結構,包括條件語句、循環語句和跳躍語句,以幫助讀者更好地理解和應用這些結構。
條件語句
Golang 中的條件語句包括 if 語句、switch 語句和 select 語句。
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 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 { 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 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
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。
for i := 0; i < 10; i++ { if i == 5 { break } fmt.Printf("%d ", i) } fmt.Println()輸出結果:
0 1 2 3 4
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 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中文網其他相關文章!