首頁  >  文章  >  後端開發  >  golang 流程控制

golang 流程控制

WBOY
WBOY原創
2023-05-13 11:12:37366瀏覽

Golang 是一種高效且現代的程式語言,其在流程控制方面提供了豐富的功能。本文將探討 Golang 中的流程控制結構,包括條件語句、循環語句和跳躍語句,以幫助讀者更好地理解和應用這些結構。

條件語句

Golang 中的條件語句包括 if 語句、switch 語句和 select 語句。

  1. 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
  1. 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
  1. select 語句
##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 語句用於循環執行一段程式碼,語法如下:

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 語句
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 語句
break 語句用於中斷循環體,語法如下:

for i := 0; i < 10; i++ {
    if i == 5 {
        break
    }
    fmt.Printf("%d ", i)
}
fmt.Println()

輸出結果:

0 1 2 3 4

    #continue 語句
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)處執行,語法如下:

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn