2016-12-05 80 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

相關問題