当前位置: 首页 > 面试题库 >

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

杜鸿彩
2023-03-14
问题内容

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

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()函数代码,它返回一个字符串,因此我看不到任何原因导致我的示例不起作用。

难道我做错了什么?!


问题答案:

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

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



 类似资料:
  • 下面的代码返回一个错误,但我不确定原因。需要更改哪些内容以允许编译?

  • 问题内容: 我已经为Employee类的父类是抽象的并且父类中的clone()方法是抽象的编写了此克隆方法。我想用此代码复制Employee对象的原始数据类型,而不是复制每个原始数据单独键入,但是此代码在我调用clone()方法的行中有问题。(此代码在Employee类中) 错误是:来自对象类型的方法clone()不可见。 但是我的Employee类在类层次结构中,可以访问Object类中受保护的

  • 我目前正在修复别人的Java代码中的一个bug,但我无法解释这个bug。所讨论的代码是下面的if语句: 其中初始化为和函数如下所示: 令我困惑的是,即使被设置为false,代码仍然调用并执行函数。我一直认为这是不应该发生的短路。if语句本身总体上仍然被计算为false,因为只有第一个代码段中的else-block中的代码被执行。 那么,这个if语句为什么会有这样的行为呢?是短路失败,还是我误解了原

  • 我有一个关于书库的问题...我想写一个有3个堆栈的程序,我想在每个堆栈上添加这些操作(我应该使用数组): 1.创建堆栈2。按3号。流行音乐4号。显示每个堆栈的顶部 我写的程序,但我遇到了这些错误: 错误4错误LNK2019:未解析的外部符号“public:int\u thiscall stack::IsFull2(void)”(?IsFull2@stack@@QAEHXZ)在函数“public:v

  • 我制作了这个简单的GUI程序,它可以计算特定字符序列的元音和辅音。计数器还可以,但是我对if-else语句有一个问题,当那个字符既不是元音也不是辅音时,我必须显示一条消息...代码如下: 它看起来是这样的: 我输入了一个没有任何特殊字符或数字的字符“序列”。但它仍然显示消息,其中它有元音和辅音以外的其他字符。if-else语句有问题吗?感谢您的帮助:)

  • 问题内容: 我正在阅读Drools Planner示例,并且遇到了很多这样的代码: 据我所知,它应该初始化一个长度为n的列表,该列表存储数据类型。 但是,在表达式的两侧具有 不同的集合数据类型 该怎么办? 如果类型与匹配 ,则与执行操作有何不同: 问题答案: 是一个接口。您无法创建接口实例。 是实现List的类,您可以创建一个。 接口仅定义行为。一个实现和接口实现该行为的类。 您将注意到,如果您查