golang rune类型解析,与byte,string对比,以及应用

Golang中的rune类型是一个32位的整数类型(int32),它是用来表示Unicode码点的。rune类型的值可以是任何合法的Unicode码点,它通常用来处理字符串中的单个字符。

在Golang中,字符常量使用单引号来表示,例如 'a'。使用单引号表示的字符常量是一个rune类型的值。

可以使用内置的rune函数将字符串转换为rune类型的切片。例如:

str := "Hello, 世界"
runes := []rune(str)
fmt.Println(runes)

输出结果是

[72 101 108 108 111 44 114 117 110 101 19990 30028]

前面几位72,101...与ascii码H e l l o的值一一对应

其实unicode与ascii都是字符串对应的计算机码用的,Unicode是为了补充ascii的不足(毕竟ascii码不包含中文)

可以使用内置的len函数获取rune类型切片的长度,该长度表示字符串中的字符数量。例如:

str := "Hello, 世界"
runes := []rune(str)
fmt.Println(len(str),len(runes))

输出结果分别是12与8

str := "Hello, 世界"
for i := 0; i < 12; i++ {fmt.Printf("%c",str[i])
}
//输出结果Hello, ä¸ç

在输出中,%c格式化动词用于打印rune类型的值,将其表示为字符。

说明len(str)中文跟英文,所占的长度是不一样的,中文占3个字节

而len(runes)返回的是字符串的个数

可以使用for循环遍历rune类型切片,以便访问字符串中的每个字符。例如:

for _, r := range runes {fmt.Printf("%c", r)
}

输出结果为:Hello,世界

rune类型还可以转换成string类型,例如:

var a rune = 'a'
fmt.Println(string(a))
var b []rune = []rune{'a','b'}
fmt.Println(string(b))

需要注意的是,因为rune类型是一个整数类型,所以可以进行算术和逻辑操作。

package mainimport "fmt"func main() {// 算术操作r1 := 'A'r2 := 'a'sum := r1 + r2diff := r1 - r2fmt.Printf("Sum: %c\n", sum)fmt.Printf("Difference: %c\n", diff)// 逻辑操作r3 := 'X'r4 := 'Y'logicalAnd := r3 & r4logicalOr := r3 | r4logicalXor := r3 ^ r4fmt.Printf("Logical AND: %c\n", logicalAnd)fmt.Printf("Logical OR: %c\n", logicalOr)fmt.Printf("Logical XOR: %c\n", logicalXor)
}

输出值都是乱码、或许在需要对称加密场景下可以使用?

rune类型与Byte类型对比:

package mainimport "fmt"func main() {var a rune = '林'fmt.Println(a)//26519var b rune = 'a'fmt.Println(b)//97var c byte = 'a'fmt.Println(c)//97//var d byte = '林' //因为超出了值域会报错,byte类型是0-255//fmt.Println(d)}

总结:rune 用于处理单个字符,string 用于处理字符串,byte 用于处理单个字节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/13923.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rust - 使用 cargo-nextest 替代 cargo test

cargo-nextest 是新一代的rust测试程序&#xff0c;能够极大提升测试性能&#xff0c;可以完全替代 cargo test 命令。 1. 安装 cargo install cargo-nextest2. 执行测试 project ├── Cargo.toml ├── LICENSE ├── README.md ├── build.rs ├── core_utils │ …

K-means聚类模型

目录 1.定义 2.K-means聚类模型的优点 3.K-means聚类模型的缺点 4.K-means聚类模型的应用场景 5.对K-means聚类模型未来的展望 6.小结 1.定义 什么是 K-means 聚类模型&#xff1f;K-means 聚类模型是一种无监督学习算法&#xff0c;用于将数据划分为不同的组或簇&#…

Lumines推出RGBL彩色混合LED

Luminus Devices倾心打造了一款崭新的4合1 RGBL&#xff08;红绿蓝绿石灰&#xff09;LED系列&#xff0c;专为舞台与建筑照明领域量身打造&#xff0c;满足对高显色指数&#xff08;CRI&#xff09;与高输出颜色混合的苛刻需求。这一创新之举&#xff0c;无疑是照明技术的一次…

使用HiBurn烧录鸿蒙.bin文件到Hi3861开发板

鸿蒙官方文档的“Hi3861开发板第一个示例程序”中描述了——如何使用DevEco Device Tool工具烧录二进制文件到Hi3861开发板&#xff1b; 本文将介绍如何使用HiBurn工具烧录鸿蒙的.bin文件到Hi3861开发板。 获取HiBurn工具 通过鸿蒙官方文档我们知道DevEco Device Tool是一个V…

SAP--ABAP踩坑日志---日期函数的踩坑-----FIMA_DATE_CREATE

当你需要动态生成日期列的时候,出现了奇怪的BUG怎么办? 用函数循环循环产生获取下一个日期,结果出现了5.30 直接到6.1了 …我的5.31呢??? 解决方案:用这个,不要瞎用函数啊! day_col day_col 1.

Mybatis 与 MybatisPlus 打印sql日志配置

Mybatis 与 MybatisPlus 打印sql日志配置 方法一&#xff1a; Mybatis 配置&#xff1a; mybatis:configuration: ### 开启打印sql配置log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ### 开启驼峰配置 map-underscore-to-camel-case&#xff1a;trueMyb…

docker所在磁盘空间不足 迁移数据

1.查看原始目录docker info | grep "Docker Root Dir" 一般在/var/lib/docker 2.停止docker service docekr stop 3.移动数据 注意 移动前不要创建docker目录&#xff01; mv /var/lib/docker /home/docker 4.进入目录查看是否与原始目录相同&#xff0c;确认一…

LeetCode 题解:112. 路径总和,递归,JavaScript,详细注释

原题链接&#xff1a; 112. 路径总和 解题思路&#xff1a; 如果求根节点到叶子节点的路径上的节点值之和&#xff0c;假设共有3个节点&#xff0c;那么写成计算式是val1 val2 val3 sum那么将计算式转换就可以得到val3 sum - val1 - val2也就是说&#xff0c;问题可以从…

表现层框架设计之表现层设计模式_2.MVP模式

1.MVP模式 MVP&#xff08;Model-View-Presenter&#xff09;模式提供数据&#xff0c;View负责显示&#xff0c;Controller/Presenter负责逻辑的处理。MVP是从经典的模式MVC演变而来&#xff0c;它们的基本思想有相通的地方&#xff1a;Controller/Presenter负责逻辑的处理&am…

16、设计模式之迭代器模式

迭代器模式 迭代器模式&#xff08;Iterator Pattern&#xff09;是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素&#xff0c;不需要知道集合对象的底层表示。 迭代器模式属于行为型模式。 介绍 意图&#xff1a; 提供一种方法顺序访问…

rtemis 包:多种机器学习算法集成!兼顾数据处理与可视化美图

rtemis 是一个集机器学习与可视化于一体的 R 包&#xff0c;用于各种高级机器学习研究和应用。整体而言&#xff0c;该软件有三个目标&#xff1a; 「应用数据科学」&#xff1a;使高级数据分析高效且易于使用 「机器学习研究」&#xff1a;提供一个平台以开发和测试新颖的机器…

Linux 查询开机时间

在Linux系统中&#xff0c;有几种方法可以查询系统的开机时间。 博主博客 https://blog.uso6.comhttps://blog.csdn.net/dxk539687357 方法一&#xff1a;使用 uptime 命令 uptime 命令显示系统的运行时间以及其他信息。 [nukixuso6 ~]# uptime输出示例&#xff1a; 15:29:…

【MySQL精通之路】查询优化器的使用(8)-优化器提示

博主PS&#xff1a;优化器提示的作用就是你可以提示优化器使用什么优化策略。当然优化器只是被提示了&#xff0c;而不是必须按你的提示做出操作&#xff0c;它可以执行或者拒绝你的提示。所以它叫优化器提示&#xff0c;而不是优化器配置。 控制优化器策略的一种方法是设置优化…

谷歌B端独立站建站推广,外贸建站训练营,傻瓜式教学

做外贸方法重要&#xff0c;工具更重要&#xff0c;而这些背后的规则和套路&#xff0c;身边的人往往不会告诉你&#xff0c;成功的人更不会教给你。本套课程主要内容包括&#xff1a;一套体系化的独立站建站方法&#xff0c;学会“高效学习”避免无效努力&#xff0c;拥有独立…

不闭合三维TSP:蛇优化算法SO求解不闭合三维TSP(起点固定,终点不定,可以更改数据集),MATLAB代码

旅行商从城市1出发&#xff0c;终点城市由算法求解而定 部分代码 close all clear clc global data load(data.txt)%导入TSP数据集 Dimsize(data,1)-1;%维度 lb-100;%下界 ub100;%上界 fobjFun;%计算总距离 SearchAgents_no100; % 种群大小&#xff08;可以修改&#xff09; …

k8s node NotReady后会发生什么?

K8s 是一种强大的容器编排和管理平台&#xff0c;能够高效地调度、管理和监控容器化应用程序&#xff1b;其本身使用声明式语义管理着集群内所有资源模型、应用程序、存储、网络等多种资源&#xff0c;Node 本身又属于 K8s 计算资源&#xff0c;上面承载运行着各种类型的应用程…

新零售数据中台:构建零售业高效率、智能化的数据处理平台_光点科技

随着互联网技术的快速发展和移动支付、大数据等技术的广泛应用&#xff0c;零售行业已经逐渐从传统零售向新零售模式转变。在这个变革的时代背景下&#xff0c;新零售数据中台应运而生&#xff0c;它作为零售行业数据资源的整合与智能分析的核心载体&#xff0c;成为推动零售行…

Batchnorm的主要作用

Batchnorm的主要作用 加速训练&#xff1a;BatchNorm能够使神经网络训练得更快更稳定。它通过调整每层网络输入的数据分布&#xff0c;使得网络的训练过程更高效。 稳定性&#xff1a;BatchNorm减少了不同批次数据之间的差异&#xff0c;使得模型训练更加稳定&#xff0c;不容…

10最佳iPhone数据恢复软件评论

您还在寻找最好的iPhone数据恢复软件吗&#xff1f; 似乎我们在iPhone上放置了越来越多与日常生活和工作有关的重要事情。照片可以保持珍贵的时刻&#xff0c;联系人可以保持联系&#xff0c;录音&#xff0c;备忘录和日历可以作为提醒&#xff0c;视频和歌曲可以娱乐&#xf…

Ethernet汇总

架构 Ethernet 汇总 Ethernet系统框架 stamac Ethernet DTS配置 Ethernet 模块&通信 Uboot实现 uboot Ethernet初始化 uboot Ethernet 数据收发流程【1】