我正在学习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弄乱了我的数据?
… ReadString弄乱了我的数据吗?
不,不是。它正在阅读下一个'\n'。这意味着一行上只有一个点的行将具有数据".\n"或".\r\n"取决于操作系统。
'\n'
".\n"
".\r\n"
要删除行尾,我会这样做 input = strings.TrimRight(input, "\r\n")
input = strings.TrimRight(input, "\r\n")