問題:
您需要轉換字串到位元組切片,而不會導致記憶體複製的效能損失,特別是在處理大型資料集時。
答案:
第1 步:了解記憶體複製問題
Go 中的字串是不可變的,這意味著它們不能就地修改。因此,使用 []byte(string) 語法將字串轉換為位元組切片會產生記憶體副本。
第 2 步:使用 Unsafe
防止記憶體複製複製,可以採用不安全的操作。 unsafe String 函數可用來檢索指向底層字串資料的指標。
<code class="go">import "unsafe" func unsafeGetBytes(s string) []byte { return (*[0x7fff0000]byte)(unsafe.Pointer( (*reflect.StringHeader)(unsafe.Pointer(&s)).Data), )[:len(s):len(s)] }</code>
說明:
其他注意事項:
以上是如何在不進行記憶體複製的情況下從 Go 中的字串中檢索位元組片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!