首页  >  文章  >  后端开发  >  如何在 Go 中获取字符的 Unicode 值?

如何在 Go 中获取字符的 Unicode 值?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-04 07:36:01553浏览

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,字符类型是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