ループの中で計算をしてから、ループが完了したら、バイト配列から文字列値を出力したい。バッファを作成せずにstdoutに書き込む
fmt.Print
を使用すると、バッファが割り当てられますが、私がしたいのは、文字をstdoutに出力することだけです。それを行う方法はありますか?
for i, i < size; i++ {
b = a[i] + i * 10
fmt.Print(string((b)))
}
fmt.Println()
ループの中で計算をしてから、ループが完了したら、バイト配列から文字列値を出力したい。バッファを作成せずにstdoutに書き込む
fmt.Print
を使用すると、バッファが割り当てられますが、私がしたいのは、文字をstdoutに出力することだけです。それを行う方法はありますか?
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.Print(string((b)))
の代わりにfmt.Printf
を使用することができます。
fmt.Printf("%c", b)
'Printf'は内部的に構造体' pp'を使います。これらのプールを使用しますが、必要に応じて割り当てを行います。 https://golang.org/src/fmt/print.go?s=5096:5159#L179 – ctcherry
THX、 'B'がありますバイトではなく、io.WriteStringを使用することができません。何らかの理由でbを文字列に変換しても何も印刷されません。 – RockNinja
@RockNinja:更新された回答をご覧ください。 –