Golang 菜鳥(niǎo)教程

Golang 控制語(yǔ)句

Golang 函數(shù) & 方法

Golang 結(jié)構(gòu)體

Golang 切片 & 數(shù)組

Golang 字符串(String)

Golang 指針

Golang 接口

Golang 并發(fā)

Golang 異常(Error)

Golang 其他雜項(xiàng)

Go 語(yǔ)言Switch語(yǔ)句

switch語(yǔ)句是一個(gè)多路分支語(yǔ)句。它提供了一種有效的方法,可以根據(jù)表達(dá)式的值(也稱為case)將執(zhí)行轉(zhuǎn)移到代碼的不同部分。Go語(yǔ)言支持兩種類(lèi)型的switch語(yǔ)句:

  1. 表達(dá)式switch

  2. 類(lèi)型switch

表達(dá)式switch

表達(dá)式switch類(lèi)似于C,C ++,Java語(yǔ)言中的switch語(yǔ)句。它提供了一種簡(jiǎn)單的方法,可以根據(jù)表達(dá)式的值將執(zhí)行分派到代碼的不同部分。

語(yǔ)法:

switch optstatement; optexpression{
    case expression1: Statement..
    case expression2: Statement..
    ...
    default: Statement..
}

重要事項(xiàng):

  • 表達(dá)式switch中的optstatement和optexpression都是可選語(yǔ)句。

  • 如果同時(shí)存在optstatementoptpression,則在它們之間需要使用分號(hào)(;)。

  • 如果switch不包含任何表達(dá)式,則編譯器會(huì)假定該表達(dá)式為true。

  • 可選語(yǔ)句,即optstatement包含簡(jiǎn)單的語(yǔ)句,例如變量聲明,遞增或賦值語(yǔ)句或函數(shù)調(diào)用等。

  • 如果可選語(yǔ)句中存在變量,則該變量的范圍限于該switch語(yǔ)句。

  • 在switch語(yǔ)句中,case和default語(yǔ)句不包含任何break語(yǔ)句。但是如果您的程序需要,您可以使用break和fallthrough語(yǔ)句。

  • 默認(rèn)(default)語(yǔ)句在switch語(yǔ)句中是可選的。

  • 如果一個(gè)case可以包含多個(gè)值,并且這些值之間用逗號(hào)(,)分隔。

  • 如果一個(gè)case不包含任何表達(dá)式,則編譯器假定這個(gè)表達(dá)式為true。

獲取指定數(shù)字是星期幾的示例:

package main

import "fmt"

func main() {

    // Switch 語(yǔ)句同時(shí)使用兩種語(yǔ)句, 如可選語(yǔ)句, day:=4 和表達(dá)式 如:day
    switch day := 4; day {
    case 1:
        fmt.Println("Monday")
    case 2:
        fmt.Println("Tuesday")
    case 3:
        fmt.Println("Wednesday")
    case 4:
        fmt.Println("Thursday")
    case 5:
        fmt.Println("Friday")
    case 6:
        fmt.Println("Saturday")
    case 7:
        fmt.Println("Sunday")
    default:
        fmt.Println("Invalid")
    }

}

輸出:

Thursday

switch語(yǔ)句不帶可選語(yǔ)句和表達(dá)式的示例:

package main 
  
import "fmt"
  
func main() { 
    var value int = 2 
      
      // switch語(yǔ)句不帶可選語(yǔ)句和表達(dá)式
   switch { 
       case value == 1: 
       fmt.Println("Hello") 
       case value == 2: 
       fmt.Println("Bonjour") 
       case value == 3: 
       fmt.Println("Namstay") 
       default:  
       fmt.Println("Invalid") 
   } 
  
}

輸出:

Bonjour

下面是沒(méi)有默認(rèn)語(yǔ)句的switch語(yǔ)句,case語(yǔ)句中的多個(gè)值:

package main

import "fmt"

func main() {
    var value string = "five"

    //沒(méi)有默認(rèn)語(yǔ)句的switch語(yǔ)句,case語(yǔ)句中的多個(gè)值
    switch value {
    case "one":
        fmt.Println("C#")
    case "two", "three":
        fmt.Println("Go")
    case "four", "five", "six":
        fmt.Println("Java")
    }
}

輸出:

Java

類(lèi)型switch

當(dāng)您想比較類(lèi)型時(shí),使用類(lèi)型switch。在此switch中,case包含要與switch表達(dá)式中出現(xiàn)的類(lèi)型進(jìn)行比較的類(lèi)型。

語(yǔ)法:

switch optstatement; typeswitchexpression{
    case typelist 1: Statement..
    case typelist 2: Statement..
    ...
    default: Statement..
}

重要事項(xiàng):

  • 可選語(yǔ)句,即optstatement,它與switch表達(dá)式中的類(lèi)似。

  • 如果一個(gè)case可以包含多個(gè)值,并且這些值之間用逗號(hào)(,)分隔。

  • 在類(lèi)型switch語(yǔ)句中,case和default語(yǔ)句不包含任何break語(yǔ)句。但是,如果程序需要,則可以使用break和fallthrough語(yǔ)句。

  • 在類(lèi)型switch語(yǔ)句中,默認(rèn)語(yǔ)句是可選的。

  • typeswitchexpression是一個(gè)表達(dá)式,其結(jié)果是一個(gè)類(lèi)型。

  • 如果使用:=運(yùn)算符在typeswitchexpression中分配了表達(dá)式,則該變量的類(lèi)型取決于case子句中的類(lèi)型。 如果case子句包含兩種或更多種類(lèi)型,則變量的類(lèi)型就是在typeswitchexpression中創(chuàng)建變量的類(lèi)型。

package main

import "fmt"

func main() {
    var value interface{}
    switch q := value.(type) {
    case bool:
        fmt.Println("值是布爾型")
    case float64:
        fmt.Println("值是float64類(lèi)型")
    case int:
        fmt.Println("值是int類(lèi)型")
    default:
        fmt.Printf("值的類(lèi)型是: %T", q)

    }
}

輸出:

值的類(lèi)型是: <nil>
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清