一尘不染

这个go switch语句有什么问题?

go

谁能看到为什么此开关不起作用?

func main() {

    reader := bufio.NewReader(os.Stdin)
    text, _ := reader.ReadString('\n')

    fmt.Print(text)

    switch text {
    case "a":
        fmt.Print("A\n")
    case "b":
        fmt.Print("B\n")
    case "c":
        fmt.Print("C\n")
    default:
        fmt.Print("DEFAULT\n")
    }
}

在此语句中,始终返回默认值,但是在对switch表达式进行硬编码时,switch块会按预期工作。查看ReadString()函数代码,它返回一个字符串,因此我看不到任何原因导致我的示例不起作用。

难道我做错了什么?!


阅读 246

收藏
2020-07-02

共1个答案

一尘不染

您的文本包含两个字节:fmt.Print(len(text))是2和fmt.Print(len("a"))是1。

您第二个符号是不可见的,您可以尝试使用将其删除text = strings.TrimSpace(text)

2020-07-02