Go 终端输入不';与预期结果不符

Go 终端输入不';与预期结果不符,go,gofmt,Go,Gofmt,我是新来的 我编写了下面的程序,允许用户输入名称 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)

我是新来的

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

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 main() {
  reader := bufio.NewReader(os.Stdin)

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

我添加到代码中的行将从您的输入中修剪新行字符。

修改您的主函数,如下所示:

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

  fmt.Print("Enter name:")
  name, err := reader.ReadString('\n')
  if err != nil {
    panic(err)
  }
  name = strings.TrimSuffix(name, "\n")
  fmt.Println(name == "nixon")
}
我添加到代码中的行从输入中修剪新行字符

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")
}
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):

输出(窗口):


修剪尾随的换行符。比如说,

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")
}
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):

输出(窗口):

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")
}
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):

输出(窗口):


修剪尾随的换行符。比如说,

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")
}
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):

输出(窗口):


刚刚添加了这个,它成功了
name=strings.TrimRight(name,“\r\n”)
\o刚刚添加了这个,它成功了
name=strings.TrimRight(名称“\r\n”)
\o