在循環內部我做了一些計算,然後我想從字節數組中打印一個字符串值,一旦循環完成後打印一個新行。在沒有創建緩衝區的情況下寫入標準輸出
使用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:請參閱我的更新答案。 –