首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用fmt.Scan()/fmt.Scanf()/fmt.Scanln()扫描包含空格的字符串?

使用fmt.Scan()/fmt.Scanf()/fmt.Scanln()扫描包含空格的字符串?
EN

Stack Overflow用户
提问于 2021-08-12 05:34:48
回答 1查看 141关注 0票数 1

使用Go语言,要读取带空格的输入字符串,我必须使用

代码语言:javascript
复制
s, err := bufio.NewReader(os.Stdin).ReadString('\n')

有没有什么方法可以使用fmt.Scanfmt.Scanffmt.Scanln()

EN

回答 1

Stack Overflow用户

发布于 2021-08-12 07:01:27

如果你正在构建一个命令行界面工具,我强烈建议你去看看cobra。它是用纯go (see dependencies)编写的,并被多个知名项目使用。

或者,我编写了一个快速(粗略的)示例来演示如何通过从标准输入中线性读取单个字节来使用Reader接口获得更好的控制。

代码语言:javascript
复制
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
}

在这里,我们暂时缓冲结果,直到达到一个空间,在这个空间,临时缓冲区被转储到一个更大的缓冲区。

这是一个示例,旨在向您展示如何以更多的控制/粒度使用阅读器接口,而不是作为一段逐字使用的代码。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68752090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档