在Golang 中將任意位元組讀入緩衝區
將資料從流讀入緩衝區有時可能需要讀取任意數量的位元組。例如,考慮一個場景,您正在從連接讀取資料並需要將其傳遞給處理程序。
常見的方法包括建立固定大小的緩衝區並使用Read() 方法:
<code class="go">buf := make([]byte, 256) for { n, err := conn.Read(buf) fmt.Println(string(buf)) if err != nil || n == 0 { return } Handle(buf[:n]) }</code>
雖然此解決方案在許多情況下都有效,但如果流沒有足夠的字節來填充緩衝區,它可能會遇到問題。為了解決這個問題,您可以使用以下解決方案:
<code class="go">var b bytes.Buffer if _, err := io.Copy(&b, conn); err != nil { return err } Handle(b.Bytes())</code>
此方法利用 io.Copy() 函數,它將整個流讀入位元組緩衝區。然後,您可以檢索位元組並將它們傳遞給您的處理程序。這可確保您讀取整個流,無論給定時間可用的位元組數如何。
以上是如何在 Golang 中將任意位元組讀入緩衝區:高效處理可變資料流?的詳細內容。更多資訊請關注PHP中文網其他相關文章!