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

Go 語言 switch 語句

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

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

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

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

語法

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

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

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

您可以同時(shí)測試多個(gè)可能符合條件的值,使用逗號(hào)分割它們,例如:case val1, val2, val3。

流程圖:

實(shí)例

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("你的等級(jí)是 %sn", grade ); ? ? ?
}

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

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

Type Switch

switch 語句還可以被用于 type-switch 來判斷某個(gè) interface 變量中實(shí)際存儲(chǔ)的變量類型。

Type Switch 語法格式如下:

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

實(shí)例

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 會(huì)強(qiáng)制執(zhí)行后面的 case 語句,fallthrough 不會(huì)判斷下一條 case 的表達(dá)式結(jié)果是否為 true。

實(shí)例

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、默認(rèn) case")
? ? }
}

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

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

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

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

其他擴(kuò)展