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

终端输入与预期结果不符

孙翰墨
2023-03-14
问题内容

我是新手。

我在下面编写了程序,以允许用户输入名称。

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    reader := bufio.NewReader(os.Stdin)

    fmt.Print("Enter name:")
    name, err := reader.ReadString('\n')
    if err != nil {
        panic(err)
    }

    fmt.Println(name == "nixon")
}

我运行了程序并输入了 尼克松的* 名字 *

为什么fmt.Println(name == "nixon")总是输出false


问题答案:

func(* Reader)ReadString

func (b *Reader) ReadString(delim byte) (string, error)

ReadString读取直到输入中第一次出现delim为止,并返回一个字符串,其中包含直到定界符(包括定界符)的数据。

name终端输入包括尾随换行符。例如,

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    reader := bufio.NewReader(os.Stdin)

    fmt.Print("Enter name:")
    name, err := reader.ReadString('\n')
    if err != nil {
        panic(err)
    }
    fmt.Printf("%q\n", name)

    fmt.Println(name == "nixon")
}

输出(Linux):

Enter name:nixon
"nixon\n"
false

输出(Windows):

Enter name:nixon
"nixon\r\n"
false

修剪尾随换行符。例如,

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    reader := bufio.NewReader(os.Stdin)

    fmt.Print("Enter name:")
    name, err := reader.ReadString('\n')
    if err != nil {
        panic(err)
    }
    fmt.Printf("%q\n", name)
    name = strings.TrimRight(name, "\r\n")
    fmt.Printf("%q\n", name)

    fmt.Println(name == "nixon")

}

输出(Linux):

Enter name:nixon
"nixon\n"
"nixon"
true

输出(Windows):

Enter name:nixon
"nixon\r\n"
"nixon"
true


 类似资料:
  • 问题内容: 我有以下代码片段: 我期望结果为“ 987654321”,但是我得到“ 123456789”,就像方法setNumber没有任何效果,任何人都可以帮助我理解 问题答案: 您在方法内重新声明phoneNumber变量,使类中的字段处于阴影中,因此对局部变量所做的任何更改都不会在带阴影的类字段中显示。不要这样 摆脱重复变量声明,以便在字段中看到在方法内所做的更改。 例如,更改此: 对此:

  • 当我的应用程序SP和客户端IdP之间出现SSO时,我收到了“由:org.opensaml.xml.security.SecurityException:SAML消息预期目标endpoint与收件人endpoint不匹配”的“异常”。 服务器日志显示了架构的差异,请参见下文: 我的应用程序在2个实例上的STG上运行,LB在前,因此我使用< code > SAMLContextProviderLB 上

  • 我有一个与mockMvc一起工作的JUnit测试,它会发生一些奇怪的事情。我的测试用例看起来像那样... 我希望它能起作用,但我收到了这条信息。 有人能帮我吗?在这种情况下,我用那些... 导入静态组织。汉克雷斯特。配对者*;

  • 我有一个带有两个衰减函数(ES 2.4.4)的查询,我使用对查询项中的衰减函数得分求和。对于测试,我使用来防止任何其他分数(来自查询)影响我的分数(我想测试衰减函数)。 这些是我的衰减函数: 我的结果包括2篇不同日期的文章(2017-08-28,2009-05-08)具有相同的优先级(1000)和相同的分数!(13.122)怎么会这样?为什么没有获得更好的分数?所以我试图解释查询。 对于2017-

  • 我想mock接受对象参数的方法。此对象参数是从动态创建的。不会返回预期的结果,尽管这两个对象具有相同的数据,但只是不同的哈希代码。 有没有什么方法来模拟方法,使它能够以预期的结果响应?

  • filter命令未按预期工作。如何重构代码以获得请求的输出? 在