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,字符类型是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中文网其他相关文章!