中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

Go 語言 switch 語句

Go 語言條件語句 Go 語言條件語句

switch 語句用于基于不同條件執(zhí)行不同動作,每一個 case 分支都是唯一的,從上至下逐一測試,直到匹配為止。

switch 語句執(zhí)行的過程從上至下,直到找到匹配項,匹配項后面也不需要再加 break。

switch 默認情況下 case 最后自帶 break 語句,匹配成功后就不會執(zhí)行其他 case,如果我們需要執(zhí)行后面的 case,可以使用 fallthrough

語法

Go 編程語言中 switch 語句的語法如下:

switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}

變量 var1 可以是任何類型,而 val1 和 val2 則可以是同類型的任意值。類型不被局限于常量或整數(shù),但必須是相同的類型;或者最終結(jié)果為相同類型的表達式。

您可以同時測試多個可能符合條件的值,使用逗號分割它們,例如:case val1, val2, val3。

流程圖:

實例

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 50,60,70 : grade = "C"
? ? ? default: grade = "D" ?
? ?}

? ?switch {
? ? ? case grade == "A" :
? ? ? ? ?fmt.Printf("優(yōu)秀!n" ) ? ?
? ? ? case grade == "B", grade == "C" :
? ? ? ? ?fmt.Printf("良好n" ) ? ? ?
? ? ? case grade == "D" :
? ? ? ? ?fmt.Printf("及格n" ) ? ? ?
? ? ? case grade == "F":
? ? ? ? ?fmt.Printf("不及格n" )
? ? ? default:
? ? ? ? ?fmt.Printf("差n" );
? ?}
? ?fmt.Printf("你的等級是 %sn", grade ); ? ? ?
}

以上代碼執(zhí)行結(jié)果為:

優(yōu)秀!
你的等級是 A

Type Switch

switch 語句還可以被用于 type-switch 來判斷某個 interface 變量中實際存儲的變量類型。

Type Switch 語法格式如下:

switch x.(type){
    case type:
       statement(s);      
    case type:
       statement(s); 
    /* 你可以定義任意個數(shù)的case */
    default: /* 可選 */
       statement(s);
}

實例

package main

import "fmt"

func main() {
? ?var x interface{}
? ? ?
? ?switch i := x.(type) {
? ? ? case nil: ?
? ? ? ? ?fmt.Printf(" x 的類型 :%T",i) ? ? ? ? ? ? ? ?
? ? ? case int: ?
? ? ? ? ?fmt.Printf("x 是 int 型") ? ? ? ? ? ? ? ? ? ? ?
? ? ? case float64:
? ? ? ? ?fmt.Printf("x 是 float64 型") ? ? ? ? ?
? ? ? case func(int) float64:
? ? ? ? ?fmt.Printf("x 是 func(int) 型") ? ? ? ? ? ? ? ? ? ? ?
? ? ? case bool, string:
? ? ? ? ?fmt.Printf("x 是 bool 或 string 型" ) ? ? ?
? ? ? default:
? ? ? ? ?fmt.Printf("未知型") ? ?
? ?} ?
}

以上代碼執(zhí)行結(jié)果為:

x 的類型 :<nil>

fallthrough

使用 fallthrough 會強制執(zhí)行后面的 case 語句,fallthrough 不會判斷下一條 case 的表達式結(jié)果是否為 true。

實例

package main

import "fmt"

func main() {

? ? switch {
? ? case false:
? ? ? ? ? ? fmt.Println("1、case 條件語句為 false")
? ? ? ? ? ? fallthrough
? ? case true:
? ? ? ? ? ? fmt.Println("2、case 條件語句為 true")
? ? ? ? ? ? fallthrough
? ? case false:
? ? ? ? ? ? fmt.Println("3、case 條件語句為 false")
? ? ? ? ? ? fallthrough
? ? case true:
? ? ? ? ? ? fmt.Println("4、case 條件語句為 true")
? ? case false:
? ? ? ? ? ? fmt.Println("5、case 條件語句為 false")
? ? ? ? ? ? fallthrough
? ? default:
? ? ? ? ? ? fmt.Println("6、默認 case")
? ? }
}

以上代碼執(zhí)行結(jié)果為:

2、case 條件語句為 true
3、case 條件語句為 false
4、case 條件語句為 true

從以上代碼輸出的結(jié)果可以看出:switch 從第一個判斷表達式為 true 的 case 開始執(zhí)行,如果 case 帶有 fallthrough,程序會繼續(xù)執(zhí)行下一條 case,且它不會去判斷下一個 case 的表達式是否為 true。

Go 語言條件語句 Go 語言條件語句

其他擴展