我是新來的,無法弄清楚爲什麼最後一個案例子句(連接和測試)落入默認值。但具有新行字符(退出\ r \ n和連接\ r \ n)的人不要開關盒語句落到默認
沒有貫穿性聲明。
我已經試過標記交換機,並呼籲破[LBL]但默認塊仍得到執行
package main
import (
"fmt"
"strings"
"bufio"
"os"
)
func main() {
var cmd string
bio := bufio.NewReader(os.Stdin)
fmt.Println("Hello")
proceed := true
for proceed {
fmt.Print(">> ")
cmd, _ = bio.ReadString('\n')
cmds := strings.Split(cmd, " ")
for i := range cmds{
switch cmds[i]{
case "exit\r\n" :
proceed = false
case "connect\r\n":
fmt.Println("The connect command requires more input")
case "connect":
if i + 2 >= len(cmds) {
fmt.Println("Connect command usage: connect host port")
} else {
i++
constring := cmds[i]
i++
port := cmds[i]
con(constring, port)
}
fmt.Println("dont print anything else, dont fall through to default. There should be no reason why the default caluse is executed???")
case "test":
fmt.Println("dont print anything else, dont fall through to default. There should be no reason why the default caluse is executed???")
default:
fmt.Println("Unrecognised command: " + cmds[i])
}
}
}
}
func con (conStr, port string){
panic (conStr)
}
在默認情況下處理連接後,您可能會收到什麼嗎?嘗試在交換機之前打印cmds [i],看看有沒有你不期待的東西。 –
在開關語句如fmt.Printf(「>>>%s <<<」,cmds [i])之前,在迴路中使用print語句排除故障您可能會發現「exit」和「connect」沒有新行 – openwonk