Rune 與Byte Ranging over String 解釋
在Go 中使用for 循環遍歷字串時,您可能已經注意到以下差異獲取的資料類型取決於您使用的方法。使用“for i, c := range s”形式對字串進行範圍搜尋會產生符文類型,而使用“s[i]”等直接索引會傳回位元組類型。
這個差異源自於底層Go 中字串的定義,將其指定為位元組序列。當您使用「s[i]」存取字串時,您可以直接檢索索引 i 處的位元組值。但是,當您使用「for range」迭代字串時,range 子句對 Unicode 程式碼點進行操作,這些程式碼點在 Go 中表示為符文。
range 對符文起作用的原因是提供一種慣用的方式迭代字串而無需手動解碼 UTF-8 序列。如果範圍僅適用於字節,則您必須編寫自己的自訂循環來遍歷符文。
但是,您仍然可以使用以下技術存取字串中的位元組:
for i := 0; i < len(s); i++ { ... }
或
for i, b := range []byte(s) { ... }
這些替代方法使您可以在必要時靈活地顯式處理位元組。
在總之,在字串的 for-range 構造中使用符文提供了一種迭代字串的 Unicode 表示形式的便捷方法。雖然您仍然可以根據需要存取各個字節,但這種方法簡化了流程,使在 Go 中操作字串變得更容易、更直觀。
以上是Go 字串迭代中的 Rune 與 Byte:何時取得 Rune,何時取得位元組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!