当前位置: 首页 > 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来获取码点对应的值。

相关文章:

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 int32rune通常用于处理字符串中的单…...

C51--PC通过串口(中断)点亮LED

B4中的:REN允许 / 禁止串行接收控制位 REN 1为允许串行接收状态。 接收数据必须开启。所以SCON:0101 0000 ;即0x50 如何知道数据已经接收 RI位:当收到数据后 RI 1(由硬件置一) 硬件置一后必须用软件…...

使用pixy计算群体遗传学统计量

1 数据过滤 过滤参数:过滤掉次等位基因频率(minor allele frequency,MAF)低于0.05、哈达-温伯格平衡(Hardy– Weinberg equilibrium,HWE)对应的P值低于1e-10或杂合率(heterozygosit…...

第十九章总结:Java绘图

19.1:Java绘图类 19.2:绘制图形 package nineteentn; import java.awt.*; import javax.swing.*; public class DrawCircle extends JFrame { private final int OVAL_WIDTH 80; // 圆形的宽 private final int OVAL_HEIGHT 80; // 圆形的高…...

Mybatis-Plus条件构造器QueryWrapper

Mybatis-Plus条件构造器QueryWrapper 1、条件构造器关系介绍 介绍 : 上图绿色框为抽象类 蓝色框为正常类,可创建对象 黄色箭头指向为父子类关系,箭头指向为父类 wapper介绍 : Wrapper : 条件构造抽象类&#xff0…...

python解析wirshark抓包数据

因为工作需要,需要分析wirshark的抓包数据。数据有的是在比特位中。不方便查找。而lua语言又不愿意去学,所以用python解析后,输出日志。帮助分析.1.tcp分析 from dpkt.tcp import TCP from scapy.all import * from datetime import datetim…...

一个用于操作Excel文件的.NET开源库

推荐一个高性能、跨平台的操作Excel文件的.NET开源库。 01 项目简介 ClosedXML是一个.NET第三方开源库,支持读取、操作和写入Excel 2007 (.xlsx, .xlsm)文件,是基于OpenXML封装的,让开发人员无需了解OpenXML API底层API&#xf…...

Web APIs——正则表达式使用

1、什么是正则表达式 正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象 通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式 1.1 正则表达式使用场景 例如…...

文件包含学习笔记总结

文件包含概述 ​ 程序开发人员通常会把可重复使用函数或语句写到单个文件中,形成“封装”。在使用某个功能的时候,直接调用此文件,无需再次编写,提高代码重用性,减少代码量。这种调用文件的过程通常称为包含。 ​ 程…...

<C++> 优先级队列

目录 前言 一、priority_queue的使用 1. 成员函数 2. 例题 二、仿函数 三、模拟实现 1. 迭代器区间构造函数 && AdjustDown 2. pop 3. push && AdjustUp 4. top 5. size 6. empty 四、完整实现 总结 前言 优先级队列以及前面的双端队列基本上已经脱离了队列定…...

systemverilog:interface中的modport用法

使用modport可以将interface中的信号分组并指定方向,方向是从modport连接的模块看过来的。简单示例如下: interface cnt_if (input bit clk);logic rstn;logic load_en;logic [3:0] load;logic [7:0] count;modport TEST (input clk, count,output rst…...

VR建筑仿真场景编辑软件有助于激发创作者的灵感和创造力

随着VR虚拟现实技术的不断发展和普及,VR虚拟场景编辑器逐渐成为了VR场景开发重要工具。它对于丰富和完善VR虚拟现实内容的创建和呈现具有重要的意义,为我们的工作和教学带来了许多变化和可能性。 首先,VR虚拟场景编辑器对于提升用户体验具有重…...

8.查询数据

一、单表查询 MySQL从数据表中查询数据的基本语为SELECT语。SELECT语的基本格式是: SELECT {* | <字段列名>} [ FROM <表 1>, <表 2>… [WHERE <表达式> [GROUP BY <group by definition> [HAVING <expression> [{<operator>…...

VB.NET—Bug调试(参数话查询、附近语法错误)

目录 前言: BUG是什么&#xff01; 事情的经过: 过程: 错误一: 错误二: 总结: 前言: BUG是什么&#xff01; 在计算机科学中&#xff0c;BUG是指程序中的错误或缺陷&#xff0c;它通过是值代码中的错误、逻辑错误、语法错误、运行时错误等相关问题&#xff0c;这些问题…...

武汉凯迪正大—锂电池均衡维护仪

产品概况 KDZD885C 电池容量平衡测试系统&#xff0c;主要用于锂电池箱充放电测试及均衡维护&#xff0c;解决锂电池包单芯电压不均衡的痛点&#xff0c;用于快速解决锂电池电压不一致的难题,适用于各锂电池模组电压等级&#xff0c;集单芯放电&#xff0c;充电&#xff0c;均…...

解决服务器中的mysql连接不上Navicat的问题脚本

shell标本&#xff0c;快速解决服务器中的mysql连接不上Navicat的问题 在Linux服务器开发中&#xff0c;mysql的配置文件一般是只允许本地连接 所以想用Navicat进行连接&#xff0c;就需要修改配置和mysql中用户访问表的权限 为了方便&#xff0c;写成了shell脚本 #!/bin/bas…...

Git Flow的简单使用

目录 系列文章目录 一、新建feture下的分支 二、合并分支且删除当前分支 注意&#xff1a;这两个命令都得是在develop分支下进行 一、新建feture下的分支 xxx为自己命名的分支 git flow feature start xxx 二、合并分支且删除当前分支 需要先提交一下当前分支的代码&…...

LOWORD, HIWORD, LOBYTE, HIBYTE的解释

文章目录 实验结论 实验 int 类型大小正常为4Byte 以小端序来看 0x12345678在内存中的存储为 0x78 0x56 0x34 0x120x78在低地址&#xff0c;0x12在高地址 程序输出 #include <stdio.h> #include <string.h> #include<windows.h>int main() {int a 0x12345…...

Centos7.9用rancher来快速部署K8S

什么是 Rancher&#xff1f; Rancher 是一个 Kubernetes 管理工具&#xff0c;让你能在任何地方和任何提供商上部署和运行集群。 Rancher 可以创建来自 Kubernetes 托管服务提供商的集群&#xff0c;创建节点并安装 Kubernetes&#xff0c;或者导入在任何地方运行的现有 Kube…...

NSSCTF第12页(2)

[CSAWQual 2019]Unagi 是xxe注入&#xff0c;等找时间会专门去学一下 XML外部实体&#xff08;XXE&#xff09;注入 - 知乎 【精选】XML注入学习-CSDN博客 【精选】XML注入_xml注入例子-CSDN博客 题目描述说flag在/flag下 发现有上传点&#xff0c;上传一句话木马试试 文件…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...