发布于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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!