【问题标题】:Write to stdout without creating a buffer在不创建缓冲区的情况下写入标准输出
【发布时间】:2016-12-05 21:15:30
【问题描述】:

在循环中我做了一些计算,然后我想从字节数组中打印一个字符串值,一旦循环完成打印一个新行。

使用fmt.Print 将分配一个缓冲区,但我要做的就是将字符打印到标准输出。有没有办法做到这一点?

for i, i < size; i++ {
    b = a[i] + i * 10
    fmt.Print(string((b)))
}
fmt.Println()

【问题讨论】:

    标签: go


    【解决方案1】:

    您只需写入os.Stdout 文件即可:

    var buff [1]byte
    for i, i < size; i++ {
        b = a[i] + i * 10
        buff[0] = b
        os.Stdout.Write(buff[:])
    }
    buff[0] = '\n'
    os.Stdout.Write(buff[:])
    

    【讨论】:

    • thx,b 是一个字节而不是整数,我不能使用 io.WriteString,由于某种原因,将 b 转换为字符串不会打印任何内容
    【解决方案2】:

    您可以像这样使用fmt.Printf 而不是fmt.Print(string((b)))

     fmt.Printf("%c", b)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-18
    • 2023-03-23
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多