Go 中字串元素存取期間的轉換
在Go 中,存取字串元素會傳回位元組(uint8),儘管它們表示為符文(int32)。但是,當在字串上使用 for ... range 時,您會迭代符文,而不是位元組。這就提出了一個問題:
Go在單獨存取字串元素(str[i])時是否會進行轉換?
不,存取str[i]不需要轉換。字串實際上是唯讀位元組切片,對它們進行索引可以直接存取底層位元組。
效能注意事項
鑑於範圍迭代存取符文而不是位元組,讓我們比較一下兩個程式碼片段的效能:
選項A:直接字串迭代
str := "large text" for i := range str { // use str[i] }
選項B:轉換為位元組切片
str := "large text" str2 := []byte(str) for _, s := range str2 { // use s }
實際上,這兩個選項都不涉及複製或轉換。第二個選項只是迭代相同底層位元組片的更詳細的方式。因此,兩者之間沒有性能差異。
首選方法
鑑於沒有效能差異,首選方法取決於特定要求:
以上是單獨存取字串元素時,Go 是否將位元組轉換為符文?的詳細內容。更多資訊請關注PHP中文網其他相關文章!