2016-12-05 107 views
1

在循环内部我做了一些计算,然后我想从字节数组中打印一个字符串值,一旦循环完成后打印一个新行。在没有创建缓冲区的情况下写入标准输出

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

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

回答

2

您可以通过简单地写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[:]) 
+0

THX,'B'是字节不是一个整数,我不能使用io.WriteString,出于某种原因将b转换为字符串不会打印任何东西 – RockNinja

+0

@RockNinja:请参阅我的更新答案。 –

1

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

fmt.Printf("%c", b) 
+1

'Printf'在内部使用struct'pp'。它确实使用了这些池,但如果需要它仍然会分配。 https://golang.org/src/fmt/print.go?s=5096:5159#L179 – ctcherry

相关问题