定义

rune关键字,它是int32的别名(-231~231-1),对于byte(-128~127),可表示的字符更多。

官方的解释如下:

// 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

实例

package mainimport ("fmt""unicode/utf8"
)func main() {var chinese = "我是中国人, I am Chinese"fmt.Println("chinese length", len(chinese))fmt.Println("chinese word length", len([]rune(chinese)))fmt.Println("chinese word length", utf8.RuneCountInString(chinese))
}

输出:

// 注意在golang中一个汉字占3个byte
chinese length 31
chinese word length 19
chinese word length 19

golang中string底层是通过byte数组实现的。中文字符在unicode下占2个字节,在utf-8编码下占3个字节,而golang默认编码正好是utf-8。

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

package mainimport ("fmt""unicode/utf8"
)func main() {var str = "hello 世界"//golang中string底层是通过byte数组实现的,直接求len 实际是在按字节长度计算  所以一个汉字占3个字节算了3个长度fmt.Println("len(str):", len(str))//以下两种都可以得到str的字符串长度//golang中的unicode/utf8包提供了用utf-8获取长度的方法fmt.Println("RuneCountInString:", utf8.RuneCountInString(str))//通过rune类型处理unicode字符fmt.Println("rune:", len([]rune(str)))
}

输出结果:

golang rune类型简介相关推荐

  1. golang error类型 简介

    error类型是go语言的一种内置类型,使用的时候不用特定去import,他本质上是一个接口, type error interface{Error() string //Error()是每一个订制的 ...

  2. golang中的rune类型

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

  3. go语言的rune类型

    在学习golang基础的时候,发现有个叫rune的的数据类型,当时不理解这个类型的意义. 查询,官方的解释如下: // rune is an alias for int32 and is equiva ...

  4. bool类型数组转换成一个整数_Go 学习笔记 02 | 基本数据类型以及 byte 和 rune 类型...

    一.基本数据类型 unsafe.Sizeof() 查看不同长度的整型在内存中的存储空间. 类型转换,高位向低位转换要注意溢出. 数字字面量语法. 64 位系统中 Go 语言中浮点数默认是 float6 ...

  5. go - rune类型

    一.简介 rune类型是Go语言的一种特殊数字类型. rune是类型int32的别名,在所有方面都等急啊于它,用来区分字符值跟整数值. Go语言通过rune处理中文,支持国际化多语言. 字符串由字符组 ...

  6. 大家一起学Golang——Go语言简介与安装

    大家一起学Golang --Go语言简介与安装 go语言简介 Go语言是有google公司推出的一门编程语言,是开源,静态编程语言,语法简洁,天生支持并发. 2007年由Robert Grieseme ...

  7. golang枚举类型 - iota用法拾遗

    在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...

  8. golang 获取struct类型_聊聊golang的类型断言

    序 本文主要研究一下golang的类型断言 类型断言 x.(T) 断言x不为nil且x为T类型 如果T不是接口类型,则该断言x为T类型 如果T类接口类型,则该断言x实现了T接口 实例1 func ma ...

  9. 《Abaqus GUI程序开发指南(Python语言)》——2.5 动态类型简介

    本节书摘来自异步社区<Abaqus GUI程序开发指南(Python语言)>一书中的第2章,第2.5节,作者: 贾利勇 , 富琛阳子 , 贺高 , 周正光 更多章节内容可以访问云栖社区&q ...

最新文章

  1. Google排名第一的技术,引数十万人关注!网友:差点我就放弃了!
  2. 增强现实:一场正在到来的医疗革命
  3. BT5下用ncrack破解3389
  4. 切换数据库_硬核数据库postgres使用pgpool完成主备自动切换,快来盘它
  5. CORS预检请求详谈
  6. php class variable,PHP中的變量類擴展 - 是否可能?
  7. UE4之Import源码解析
  8. 鸿蒙系统可以安装teams吗,鸿蒙致命弱点被曝光!不能装这个软件,80%用户将望而却步!...
  9. 【POJ 2104】【主席树模板题】K-th Number
  10. c# 小写金额转大写
  11. C语言大作业:车辆信息管理系统
  12. Thinkphp仿众图网图片素材下载站源码+自适应手机端
  13. Win系统 - 微星 GS65 笔记本电脑开机黑屏
  14. Java 读取excel文件并导入数据库
  15. google play连接超时_谷歌Play多年来一直传播高级安卓恶意软件,并曾被用于间谍活动!...
  16. 关于三菱触摸屏GT Designer3 仿真软件创建工程
  17. 笔记本电脑切换不到投影仪 问题 解决方法
  18. 如何在Oracle官网下载JDK8u202
  19. SpringBoot2后端项目-验证码图片生成
  20. 太棒了,Python和算法简直是绝配

热门文章

  1. DirectX下 Viewing Frustum 的详细实现
  2. 两个表点击分页的时候怎么判断点的是哪一个表_百亿级数据分表后怎么分页查询?...
  3. 计算机组成原理 — CPU 中央处理器
  4. 让人失望透顶的 CSDN 博客改版
  5. Oracle 用户概念与基本操作
  6. 使用Gunicorn Ngnx Supervisor部署Django项目
  7. nyoj 762:第k个互质数
  8. linux 基础学习入门 2
  9. Linux常用命令汇总(二)
  10. CSS3中box-shadow的用法介绍