一尘不染

从标准输入读取行直到特定字符

go

我正在学习Go。

我的程序应该从stdin中读取数据,直到我输入一个单句点的行。

package main

import (

  "os"
  "fmt"
  "bufio"

)

func main(){

  in    := bufio.NewReader(os.Stdin)
  input := ""

  for input != "." {
    input, err := in.ReadString('\n')
    if err != nil {
      panic(err)
    }
  }
}

我应该如何修改for循环,以在输入单个点时停止程序?

我试图用for语句实现while循环,我的方法是否有问题,条件是否错误,还是ReadString弄乱了我的数据?


阅读 190

收藏
2020-07-02

共1个答案

一尘不染

… ReadString弄乱了我的数据吗?

不,不是。它正在阅读下一个'\n'。这意味着一行上只有一个点的行将具有数据".\n"".\r\n"取决于操作系统。

要删除行尾,我会这样做 input = strings.TrimRight(input, "\r\n")

2020-07-02