本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(1)

golang中的rune类型

发布于2021-06-07 19:41     阅读(1453)     评论(0)     点赞(2)     收藏(3)


前言

在学习golang基础的时候,发现有个叫rune的的数据类型,因为本人之前一直学习的是Java相关的知识,这里对于golang里面的rune类型确实感到很不理解。因此,特写这篇文章一探究竟。

正文

官方文档解释
// 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.

//int32的别名,几乎在所有方面等同于int32
//它用来区分字符值和整数值

type rune = int32

这样可能还是对rune的作用与意义比较懵逼,我们通过一个简单的demo来看下rune的作用。先来看下下面这块代码执行结果是什么?

在这里插入图片描述
运行结果:
在这里插入图片描述
猜测结果应该是:8,5个字符1个空格2个汉字。实际上程序的运行结果为12。这是因为:golang中的字符串底层实现是通过byte数组的,中文字符在unicode下占2个字节,在utf-8编码下占3个字节,而golang默认编码正好是utf-8。

如果我们预期想得到一个字符串的长度,而不是字符串底层占得字节长度,该怎么办呢???

在这里插入图片描述
在这里插入图片描述
golang中byte数据类型与rune相似,它们都是用来表示字符类型的变量类型。它们的不同在于:

byte 等同于int8,常用来处理ascii字符
rune 等同于int32,常用来处理unicode或utf-8字符

原文链接:https://blog.csdn.net/qq_42950328/article/details/117572008



所属网站分类: 技术文章 > 博客

作者:卡卡卡

链接:http://www.phpheidong.com/blog/article/89382/ee0689f5c1da21b91555/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

2 0
收藏该文
已收藏

评论内容:(最多支持255个字符)