首頁 >後端開發 >Golang >如何在 Go 中取得字元的 Unicode 值?

如何在 Go 中取得字元的 Unicode 值?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-04 07:36:01605瀏覽

How to Get the Unicode Value of a Character in Go?

Go Equivalent of JavaScript's charCodeAt() Method

The charCodeAt() method inific index within a string. For instance:

<code class="javascript">"s".charCodeAt(0) // returns 115</code>

In Go,字元型別是rune,其是int32的別名,本身就是數字。因此,直接列印即可獲得數字Unicode值。

要取得指定位置的字符,最簡單的方法是將字串轉換為[]rune,然後使用索引。字串轉為rune的方式是型別轉換[]rune("some string"):

<code class="go">fmt.Println([]rune("s")[0])</code>

輸出:

115

要印為字符,使用%c 格式字符字串:

<code class="go">fmt.Println([]rune("absdef")[2])      // Also prints 115
fmt.Printf("%c", []rune("absdef")[2]) // Prints s</code>

此外,字串的for range 遍歷字串中的rune,因此也可以使用它。與將其轉換為[]rune 相比,這種方式的效率更高:

<code class="go">i := 0
for _, r := range "absdef" {
    if i == 2 {
        fmt.Println(r)
        break
    }
    i++
}</code>

注意,計數器i必須是一個單獨的計數器,不能是循環迭代變量,因為for range 返回的是位元組位置,而不是rune索引(如果字串包含UTF-8表示中的多位元組字符,它們是不同的)。

包裝成一個函數:

<code class="go">func charCodeAt(s string, n int) rune {
    i := 0
    for _, r := range s {
        if i == n {
            return r
        }
        i++
    }
    return 0
}</code>

最後,請注意,Go中的字符串以[]byte存儲,即文本的UTF-8編碼字節序列(請閱讀博客文章《Strings, bytes, runes and characters in Go》以了解更多資訊)。如果保證字串使用的是代碼小於127的字符,則可以直接使用位元組。即在Go中對字串進行索引會索引其字節,例如 "s"[0] 是字元's'的位元組值115。

<code class="go">fmt.Println("s"[0])      // Prints 115
fmt.Println("absdef"[2]) // Prints 115</code>

以上是如何在 Go 中取得字元的 Unicode 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn