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。
流程圖:
以上代碼執(zhí)行結(jié)果為:
優(yōu)秀! 你的等級是 A
switch 語句還可以被用于 type-switch 來判斷某個 interface 變量中實際存儲的變量類型。
Type Switch 語法格式如下:
switch x.(type){ case type: statement(s); case type: statement(s); /* 你可以定義任意個數(shù)的case */ default: /* 可選 */ statement(s); }
以上代碼執(zhí)行結(jié)果為:
x 的類型 :<nil>
使用 fallthrough 會強制執(zhí)行后面的 case 語句,fallthrough 不會判斷下一條 case 的表達式結(jié)果是否為 true。
以上代碼執(zhí)行結(jié)果為:
2、case 條件語句為 true 3、case 條件語句為 false 4、case 條件語句為 true
從以上代碼輸出的結(jié)果可以看出:switch 從第一個判斷表達式為 true 的 case 開始執(zhí)行,如果 case 帶有 fallthrough,程序會繼續(xù)執(zhí)行下一條 case,且它不會去判斷下一個 case 的表達式是否為 true。
其他擴展