2016-12-05 8 views
1

ループの中で計算をしてから、ループが完了したら、バイト配列から文字列値を出力したい。バッファを作成せずにstdoutに書き込む

fmt.Printを使用すると、バッファが割り当てられますが、私がしたいのは、文字をstdoutに出力することだけです。それを行う方法はありますか?

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.Print(string((b)))の代わりにfmt.Printfを使用することができます。

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

'Printf'は内部的に構造体' pp'を使います。これらのプールを使用しますが、必要に応じて割り当てを行います。 https://golang.org/src/fmt/print.go?s=5096:5159#L179 – ctcherry