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是Go语言中一种特殊的数据类型,它是int32的别名,几乎在所有方面等同于int32,用于区分字符值和整数值

1 package main
2
3 import "fmt"
4
5 func main() {
6
7 var str = "hello 世界"
8 fmt.Println("len(str):", len(str))
9
10 }

这段代码的执行结果为:
len(str):12
从字符串字面值看len(str)的结果应该是8,但在Golang中string类型的底层是通过byte数组实现的,在unicode编码中,中文字符占两个字节,而在utf-8编码中,中文字符占三个字节而Golang的默认编码正是utf-8.
如果想要获得真实的字符串长度而不是其所占用字节数,有两种方法实现
方法一:
使用unicode/utf-8包中的RuneCountInString方法
str := "hello 世界"
fmt.Println("RuneCountInString:", utf8.RuneCountInString(str))
方法二:
将字符串转换为rune类型的数组再计算长度
str := "hello 世界"
fmt.Println("rune:", len([]rune(str)))
rune 数据类型的更多相关文章
- 浅析rune数据类型
		
学习golang基础的时候,发现有个叫rune的的数据类型,当时不理解这个类型的意义. 查询,官方的解释如下: // rune is an alias for int32 and is equival ...
 - golang ----rune数据类型
		
查询,官方的解释如下: // rune is an alias for int32 and is equivalent to int32 in all ways. It is // used, by ...
 - 【golang】浅析rune数据类型
		
golang中string底层是通过byte数组实现的.中文字符在unicode下占2个字节,在utf-8编码下占3个字节,而golang默认编码正好是utf-8. golang中还有一个byte数据 ...
 - Go语言学习之3 流程控制、函数
		
主要内容: 1. strings和strconv使用2. Go中的时间和日期类型3. 指针类型4. 流程控制5. 函数详解 1. strings和strconv使用 //strings . strin ...
 - Go 语言的基本数据类型
		
Go 语言的基本数据类型 0)变量声明 var 变量名字 类型 = 表达式 例: 其中“类型”或“= 表达式”两个部分可以省略其中的一个. 1)根据初始化表达式来推导类型信息 2)默认值初始化为0. ...
 - golang: 常用数据类型底层结构分析
		
虽然golang是用C实现的,并且被称为下一代的C语言,但是golang跟C的差别还是很大的.它定义了一套很丰富的数据类型及数据结构,这些类型和结构或者是直接映射为C的数据类型,或者是用C struc ...
 - GOLANG 基本数据类型 整型
		
基本数据类型-整型 种类 有符号(负号) int8 int16 int32 int64 无符号(无符号) uint8 uint16 uint32 uint64 架构特定(取决于系统位 ...
 - golang笔记——数据类型
		
25个关键字 程序声明:import, package 程序实体声明和定义:chan, const, func, interface, map, struct, type, var 程序流程控制:go ...
 - 【GoLang】golang底层数据类型实现原理
		
虽然golang是用C实现的,并且被称为下一代的C语言,但是golang跟C的差别还是很大的.它定义了一套很丰富的数据类型及数据结构,这些类型和结构或者是直接映射为C的数据类型,或者是用C struc ...
 
随机推荐
- DELPHI网页开发神器UNIGUI的安装与演示
			
UNIGUI安装和演示 uniGUI v1.0.0.1397(带注册机).rar在delphi10.2安装 提示:安装包可以自行在网上搜索下载,或者联系我获取都可以 这里讲下怎样安装的方法: 1)执行 ...
 - NodeJS安装及部署(Linux系统)
			
环境说明:Linux环境,CentOS 7版本. 第一步:下载node地址:https://nodejs.org/en/download/ 下载后,是一个[node-v10.16.0-linux-x6 ...
 - 『线段树及扫描线算法 Atlantis』
			
入门看这边『线段树 Segment Tree』. 扫描线 扫描线是一种解决一类平面内统计问题的算法,通常会借助线段树来实现,我们通过一道例题来引入这个算法. Atlantis Description ...
 - Java学习:面向对象三大特征:封装性、继承性、多态性之多态性。
			
面向对象三大特征:封装性.继承性.多态性之多态性. extends继承或者implemens实现,是多态性的前提. 例如:小菜是一个学生,但同时也是一个人.小菜是一个对象,这个对象既有学生形态,也有人 ...
 - 可落地的DDD的(2)-为什么说MVC工程架构已经过时
			
摘要 mvc是一种软件设计模式,最早由Trygve Reenskaug在1978年提出,他有效的解决了表示层,控制器层,逻辑层的代码混合在一起的问题,很好的做到了职责分离.但是在实际的编码实践过程中, ...
 - C# Winform控件字体大小自适应
			
using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace WGClie ...
 - APS.NET MVC + EF (08)---数据注解和验证
			
对于Web开发人员来说,用户输入验证一直是一个挑战.不仅在客户端浏览器中需要执行验证逻辑,在服务器端也需要执行.如果觉得验证是令人望而生畏的繁杂琐事,ASP.NET MVC框架提供了数据注解的方式帮助 ...
 - 象棋中“车”的攻击范围_Java
			
代码如下: String[][] a = new String[8][8]; int h, l; Scanner scan = new Scanner(System.in); System.out.p ...
 - Python进阶----多表查询(内连,左连,右连), 子查询(in,带比较运算符)
			
Python进阶----多表查询(内连,左连,右连), 子查询(in,带比较运算符) 一丶多表查询 多表连接查询的应用场景:  连接是关系数据库模型的主要特点,也是区别于其他 ...
 - spark操作总结
			
一.sparkContext与sparkSession区别 任何Spark程序都是SparkContext开始的,SparkContext的初始化需要一个SparkConf对象,SparkConf包含 ...