当前位置: 首页 > news >正文

go中的rune类型

go语言中 ,rune其实是一种int32的数据类型的别名。

// rune is an alias for int32 and is equivalent to int32 in all ways. It is
// used, by convention, to distinguish character values from integer values.
type rune = int32

rune通常用于处理字符串中的单个字符,通常来区分整数值和字符值。

看下面的例子:

// 单元测试
func TestRune1(t *testing.T) {fmt.Println("The Shy:", len("The Shy"))fmt.Println("英雄联盟:", len("英雄联盟"))
}结果:
=== RUN   TestRune1
The Shy: 7
英雄联盟: 12
--- PASS: TestRune1 (0.00s)
PASS

看上面的结果The Shy: 7,这个好理解,英文的字符串的长度为7,英雄联盟: 12。为什么英雄联盟这个长度是12呢?

这是因为go语言的编码是按照UTF-8编码规则来的。UTF-8是一套以 8 位为一个编码单位的可变长编码。汉字的16进制值得区间在UTF-8的第三区段,那么在go的编码下会占用三个字符。所以在我们对字符串进去处理的时候只需要将字符串通过range去遍历,会按照rune为单位自动去处理。

func TestRune1(t *testing.T) {fmt.Println("The Shy:", len("The Shy"))fmt.Println("英雄联盟:", len("英雄联盟"))fmt.Println("-------------------")s := "英雄联盟"for k, v := range s {fmt.Printf("k:%v->v:%v->realValue:%c,", k, v, v)fmt.Println()}fmt.Println(len(s))
}// 结果:
=== RUN   TestRune1
The Shy: 7
英雄联盟: 12
-------------------
k:0->v:33521->realValue:英,
k:3->v:38596->realValue:雄,
k:6->v:32852->realValue:联,
k:9->v:30431->realValue:盟,
12
--- PASS: TestRune1 (0.00s)
PASS

可以看到,rune已经将字符串中每个字符转换为Unicode码点。

结果打印:打印出字符在字符串中的索引位置 k 和对应的Unicode码点 v 。

那码点怎么转化为汉字呢?

在Go语言中,可以使用  %c

fmt.Printf("k:%v->v:%v->realValue:%c,", k, v, v)

将Unicode码点转换为对应的字符(汉字)。其中,%c 是一个占位符,表示将一个Unicode码点格式化为对应的字符。

小结:

rune其实就是int32的数据类型,对于汉字等,将汉字转化为Unicode码点。

可以通过%c来获取码点对应的值。

http://www.lryc.cn/news/231199.html

相关文章:

  • C51--PC通过串口(中断)点亮LED
  • 使用pixy计算群体遗传学统计量
  • 第十九章总结:Java绘图
  • Mybatis-Plus条件构造器QueryWrapper
  • python解析wirshark抓包数据
  • 一个用于操作Excel文件的.NET开源库
  • Web APIs——正则表达式使用
  • 文件包含学习笔记总结
  • <C++> 优先级队列
  • systemverilog:interface中的modport用法
  • VR建筑仿真场景编辑软件有助于激发创作者的灵感和创造力
  • 8.查询数据
  • VB.NET—Bug调试(参数话查询、附近语法错误)
  • 武汉凯迪正大—锂电池均衡维护仪
  • 解决服务器中的mysql连接不上Navicat的问题脚本
  • Git Flow的简单使用
  • LOWORD, HIWORD, LOBYTE, HIBYTE的解释
  • Centos7.9用rancher来快速部署K8S
  • NSSCTF第12页(2)
  • 基于单片机的电源切换控制器设计(论文+源码)
  • 机器学习-特征选择:使用Lassco回归精确选择最佳特征
  • uniapp开发ios上线(在win环境下使用三方)
  • 【深度学习 | 核心概念】那些深度学习路上必经的核心概念,确定不来看看? (六)
  • 景联文科技:驾驭数据浪潮,赋能AI产业——全球领先的数据标注解决方案供应商
  • OpenCV+特征检测
  • Excel-lookup函数核对两个表格的数据匹配
  • Vue 简单的语法
  • 华为ensp:vrrp双机热备负载均衡
  • postswigger 靶场(CSRF)攻略-- 1.没有防御措施的 CSRF 漏洞
  • Langchain知识点(下)