使用Go语言,要读取带空格的输入字符串,我必须使用
s, err := bufio.NewReader(os.Stdin).ReadString('\n')有没有什么方法可以使用fmt.Scan、fmt.Scanf或fmt.Scanln()
发布于 2021-08-12 07:01:27
如果你正在构建一个命令行界面工具,我强烈建议你去看看cobra。它是用纯go (see dependencies)编写的,并被多个知名项目使用。
或者,我编写了一个快速(粗略的)示例来演示如何通过从标准输入中线性读取单个字节来使用Reader接口获得更好的控制。
func byteByByte() [][]byte {
reader := bufio.NewReader(os.Stdin)
buffer, result := []byte{}, [][]byte{}
for {
c, err := reader.ReadByte()
if err != nil {
break
}
if c == byte(32) {
result, buffer = append(result, buffer), []byte{}
continue
}
buffer = append(buffer, c)
}
return result
}在这里,我们暂时缓冲结果,直到达到一个空间,在这个空间,临时缓冲区被转储到一个更大的缓冲区。
这是一个示例,旨在向您展示如何以更多的控制/粒度使用阅读器接口,而不是作为一段逐字使用的代码。
https://stackoverflow.com/questions/68752090
复制相似问题