2 回答

TA貢獻1839條經(jīng)驗 獲得超15個贊
“Switch”語句提供多路執(zhí)行。表達式或類型說明符與內(nèi)部的“case”進行比較
表情開關
在表達式 switch 中,對 switch 表達式求值,而不必為常量的 case 表達式從左到右和從上到下求值;第一個等于 switch 表達式的語句觸發(fā)相關 case 語句的執(zhí)行;其他情況被跳過。如果沒有 case 匹配并且存在“默認” case,則執(zhí)行其語句。最多可以有一個默認情況,它可能出現(xiàn)在“switch”語句中的任何地方。缺少 switch 表達式等效于布爾值 true。
ExprSwitchStmt = "switch" [ SimpleStmt ";" ] [ Expression ] "{" { ExprCaseClause } "}" .
ExprCaseClause = ExprSwitchCase ":" StatementList .
ExprSwitchCase = "case" ExpressionList | "default" .
最后一個switch case子句 ( "connect"and "test") 不屬于default case子句。一break在一份聲明中switch聲明case條款打破了出來switch發(fā)言; 它不會脫離周圍的 for子句。
您尚未向我們提供可重現(xiàn)的示例:如何創(chuàng)建最小、完整和可驗證的示例。. 例如,您沒有向我們展示您的輸入和輸出。
這是一個示例,它按預期工作。default執(zhí)行該條款是有原因的。
>> test 127.0.0.1 8080
dont print anything else, dont fall through to default. There should be no reason why the default caluse is executed???
Unrecognised command: 127.0.0.1
Unrecognised command: 8080
>>
的價值cmds,fmt.Printf("%q\n", cmds)是["test" "127.0.0.1" "8080\r\n"]。
您的程序邏輯存在嚴重缺陷。

TA貢獻1878條經(jīng)驗 獲得超4個贊
嘗試strings.Trim()像這樣包裝 switch 語句的主題:
switch strings.TrimSpace(cmds[i]) {
// your cases
}
但總的來說,在這種情況下,內(nèi)部 for 循環(huán)看起來是錯誤的構造?;谶@段代碼,您可能想要刪除它,并且只將cmds數(shù)組的第一個元素作為switch 語句的主題
- 2 回答
- 0 關注
- 308 瀏覽
添加回答
舉報