首頁 > 後端開發 > Golang > 為什麼 Go 中的字串索引不總是傳回預期的字元?

為什麼 Go 中的字串索引不總是傳回預期的字元?

Barbara Streisand
發布: 2024-12-14 16:18:14
原創
657 人瀏覽過

Why Doesn't String Indexing in Go Always Return the Expected Character?

索引 Golang 字串中的字符

要從字串中檢索字符,可以使用索引操作。但是,您可能會遇到索引值與預期字元不符的情況。例如,在下面的程式碼中:

package main

import "fmt"

func main() {
    fmt.Print("HELLO"[1])
}
登入後複製

輸出是 69,而不是字母「E」。

理解 Golang 字串編碼

Golang 對字串文字使用 UTF-8 編碼。 ASCII 字元(包括字母“E”)佔用一個位元組。但是,較大的 Unicode 字元可能由多個位元組表示。

使用符文進行字符索引

要正確索引字符,請使用符文:表示 Unicode 代碼點的整數。 rune 是 UTF-8 中字元的基礎類型。您可以使用 rune() 函數將位元組轉換為符文。

將位元組轉換為字元

要將位元組轉換為其對應的字符,您可以使用string() 函數:

fmt.Println(string("Hello"[1])) // ASCII only
登入後複製

這種方法適用於ASCII

將符文轉換為字符

對於Unicode 字符,您可以使用[]rune() 切片將符文轉換為字符:

fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
登入後複製

Unicode範例字元

考慮以下範例:

fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
登入後複製

這將列印“界”,它是漢字“世界”的 Unicode 代碼點。

其他資源

  • [Go 程式語言規範關於轉換的部分](https://golang.org/ref/spec#Conversions)
  • [Go 部落格:Go 中的字串、位元組、符文和字元](https://blog.golang.org /strings-bytes-runes-and-characters-in-go)

以上是為什麼 Go 中的字串索引不總是傳回預期的字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板