dqz84361326 2016-03-23 14:23 采纳率: 0%
浏览 32
已采纳

Golang不处理2个操作

I'm a new in golang and i don't understand why I can't get next code working:

func ListApps(){
    fmt.Printf("
Press Q to go back..
")
    reader := bufio.NewReader(os.Stdin)
    input, _ := reader.ReadString('
')

    if string(input) == "q" {
        fmt.Printf("OK")
     }
 }

I want to print a message, then scan user's input in console, compare input and print messafe if imput equals string "q". Last check doesn't work for some reasons.

  • 写回答

2条回答 默认 最新

  • douyanti2808 2016-03-23 14:28
    关注

    from TFM:

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

    You are comparing the string without the delimiter.

    So just doing:

    if input == "q
    " {...}
    

    would work (BTW no need to call string(input) as input is already a string).

    Alternatively you can also trim the endline before checking, using strings.TrimRight. This will make the code more portable as it will work on Windows where is used to delimit lines. So do this:

    input = strings.TrimRight(input, "
    ")
    if input == "q" {
        fmt.Println("OK")
    }
    

    And I've tested this to work myself.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用