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中文網其他相關文章!