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。
流程圖:
以上代碼執(zhí)行結(jié)果為:
優(yōu)秀! 你的等級(jí)是 A
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); }
以上代碼執(zhí)行結(jié)果為:
x 的類型 :<nil>
使用 fallthrough 會(huì)強(qiáng)制執(zhí)行后面的 case 語句,fallthrough 不會(huì)判斷下一條 case 的表達(dá)式結(jié)果是否為 true。
以上代碼執(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。
其他擴(kuò)展