首页 > 后端开发 > Golang > 正文

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

Mary-Kate Olsen
发布: 2024-11-04 07:36:01
原创
550 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!