go - 这个 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 block 会正常工作。查看 ReadString() 函数代码,它返回一个字符串,所以我看不出有任何理由导致我的示例不起作用。

我做错了什么吗?!

最佳答案

根据 docs :

ReadString reads until the first occurrence of delim in the input, returning a string containing the data up to and including the delimiter.

因此你可以这样做:

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

switch text = strings.TrimRight(text, string(delim)); text {
  // ...
}

关于go - 这个 go switch 语句有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31464142/

相关文章:

go - golang中使用headers时打印出两个结果

linux - 在没有ssh的情况下在本地服务器上执行脚本

URL 转义生成 "%A(MISSING)"而不是 "%3A"

go - Bazel/Golang:规则'go_embed_data'不包含声明的提供程序'GoArchive'

mongodb - 生产中的MongoDB中的白名单IP地址

mongodb - 如何求和字段的值?

json - mapstructure 如何使用鉴别器来解码具体类型

go - 如何为 Go 中的行插入重用单个 Postgres DB 连接?

go - 如何在 Golang 中生成给定私钥和证书的 PKCSs#12 文件?

go - 无法在golang中测试模板