【发布时间】: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
在循环中我做了一些计算,然后我想从字节数组中打印一个字符串值,一旦循环完成打印一个新行。
使用fmt.Print 将分配一个缓冲区,但我要做的就是将字符打印到标准输出。有没有办法做到这一点?
for i, i < size; i++ {
b = a[i] + i * 10
fmt.Print(string((b)))
}
fmt.Println()
【问题讨论】:
标签: go
您只需写入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[:])
【讨论】:
b 是一个字节而不是整数,我不能使用 io.WriteString,由于某种原因,将 b 转换为字符串不会打印任何内容
您可以像这样使用fmt.Printf 而不是fmt.Print(string((b))):
fmt.Printf("%c", b)
【讨论】:
Printf 在内部使用结构 pp。它确实使用了这些池,但如果需要,它仍然会分配。 golang.org/src/fmt/print.go?s=5096:5159#L179