2 回答
TA贡献1817条经验 获得超6个赞
来自 TFM:
ReadString 读取直到输入中第一次出现 delim,返回一个包含数据的字符串,直到并包括分隔符
您正在比较没有分隔符的字符串。
所以只是这样做:
if input == "q\n" {...}
会工作(顺便说一句,不需要调用,string(input)因为输入已经是一个字符串)。
或者,您也可以在检查之前使用strings.TrimRight. 这将使代码更具可移植性,因为它可以在\r\n用于分隔行的Windows 上工作。所以这样做:
input = strings.TrimRight(input, "\r\n")
if input == "q" {
fmt.Println("OK")
}
我已经测试过这个可以自己工作。
TA贡献1934条经验 获得超2个赞
Not_a_Golfer 是正确的为什么它不工作。但是,对于从 STDIN 读取之类的简单事情,您最好使用 Scanner:
func ListApps(){
fmt.Printf("\nPress Q to go back..\n")
reader := bufio.NewScanner(os.Stdin)
reader.Scan() // this line scans the STDIN for input
// error checking...
if err := scanner.Err(); err != nil {
panic(err)
}
// To access what the scanner got, you use scanner.Text() (reader.Text() in this case)
if reader.Text() == "q" {
fmt.Printf("OK")
}
}
无论输入来自何处(Windows 命令提示符、linux/OSX 上的终端等),这都将起作用
- 2 回答
- 0 关注
- 161 浏览
添加回答
举报