Home > Article > Backend Development > How to Get the Unicode Value of a Character in Go?
Go Equivalent of JavaScript's charCodeAt() Method
The charCodeAt() method in JavaScript retrieves the numeric Unicode value of a character at a specific index within a string. For instance:
<code class="javascript">"s".charCodeAt(0) // returns 115</code>
In Go, the character type is rune, which is an alias of int32 and itself is a number. Therefore, you can get the numeric Unicode value by printing directly.
To get the character at a specified position, the easiest way is to convert the string to []rune and then use the index. The way to convert a string to a rune is type conversion []rune("some string"):
<code class="go">fmt.Println([]rune("s")[0])</code>
Output:
115
To print as characters, use the %c format character String:
<code class="go">fmt.Println([]rune("absdef")[2]) // Also prints 115 fmt.Printf("%c", []rune("absdef")[2]) // Prints s</code>
Additionally, the for range for string iterates over the runes in the string, so you can use that as well. Compared with converting it to []rune, this method is more efficient:
<code class="go">i := 0 for _, r := range "absdef" { if i == 2 { fmt.Println(r) break } i++ }</code>
Note that counter i must be a separate counter and cannot be a loop iteration variable, because for range returns is the byte position, not the rune index (they are different if the string contains multibyte characters in UTF-8 representation).
is wrapped into a function:
<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>
Finally, please note that strings in Go are stored in []byte, which is a UTF-8 encoded byte sequence of text (read the blog See the article "Strings, bytes, runes and characters in Go" for more information). If the string is guaranteed to use characters with codes less than 127, you can use bytes directly. i.e. indexing a string in Go indexes its bytes, e.g. "s"[0] is the byte value 115 of the character 's'.
<code class="go">fmt.Println("s"[0]) // Prints 115 fmt.Println("absdef"[2]) // Prints 115</code>
The above is the detailed content of How to Get the Unicode Value of a Character in Go?. For more information, please follow other related articles on the PHP Chinese website!