在循环内部我做了一些计算,然后我想从字节数组中打印一个字符串值,一旦循环完成后打印一个新行。在没有创建缓冲区的情况下写入标准输出
使用fmt.Print
将分配一个缓冲区,但我想要做的就是将字符打印到标准输出。有没有办法做到这一点?
for i, i < size; i++ {
b = a[i] + i * 10
fmt.Print(string((b)))
}
fmt.Println()
在循环内部我做了一些计算,然后我想从字节数组中打印一个字符串值,一旦循环完成后打印一个新行。在没有创建缓冲区的情况下写入标准输出
使用fmt.Print
将分配一个缓冲区,但我想要做的就是将字符打印到标准输出。有没有办法做到这一点?
for i, i < size; i++ {
b = a[i] + i * 10
fmt.Print(string((b)))
}
fmt.Println()
您可以通过简单地写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[:])
您可以使用fmt.Printf
而不是你fmt.Print(string((b)))
像这样:
fmt.Printf("%c", b)
'Printf'在内部使用struct'pp'。它确实使用了这些池,但如果需要它仍然会分配。 https://golang.org/src/fmt/print.go?s=5096:5159#L179 – ctcherry
THX,'B'是字节不是一个整数,我不能使用io.WriteString,出于某种原因将b转换为字符串不会打印任何东西 – RockNinja
@RockNinja:请参阅我的更新答案。 –