如何在golang,console input中读取多行。
reader := bufio.NewReader(os.Stdin)
fmt.Println("Enter Text:")
text, _ := reader.ReadString('\n')
如果用户点击,我必须如何更改ReadString(???)以停止读取: ctrl + s
新行(\n
)必须仍然是输入的组成部分。
是否有一些库/框架?
感谢您的帮助。
干杯
答案 0 :(得分:1)
这是Linux的答案(可以适用于其他* nix平台)
Ctrl+S
是控制字符DC3
,表示“XOFF,停止发送”。如果按Ctrl+S
,终端将冻结。
Ctrl+Q
是一个控制字符DC1
,它的意思是“XON,继续发送”,在Ctrl+S
解冻后必须这样做。
要使用Ctrl+S
,请先使用XON/XOFF
禁用stty -ixon
(可能在启动脚本中)
禁用XON/XOFF
后,示例代码如下(DC3
是HEX:13 / DEC:19在ASCII表中);
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Println("Enter Text:")
text, _ := reader.ReadString('\x13')
fmt.Println(text)
}