浅析rune数据类型
学习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
看代码:
package main
import "fmt"
func main() {
var str = "hello 你好"
fmt.Println("len(str):", len(str))
}
们猜测结果应该是:8:5个字符1个空格2个汉字。那么正确答案是多少呢?
结果是 :12
这是为什么呢?
golang中string底层是通过byte数组实现的。中文字符在unicode下占2个字节,在utf-8编码下占3个字节,而golang默认编码正好是utf-8。
解决方法:
ackage main import (
"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中还有一个byte数据类型与rune相似,它们都是用来表示字符类型的变量类型。它们的不同在于:
- byte 等同于int8,常用来处理ascii字符
- rune 等同于int32,常用来处理unicode或utf-8字符
浅析rune数据类型的更多相关文章
- 【golang】浅析rune数据类型
golang中string底层是通过byte数组实现的.中文字符在unicode下占2个字节,在utf-8编码下占3个字节,而golang默认编码正好是utf-8. golang中还有一个byte数据 ...
- golang ----rune数据类型
查询,官方的解释如下: // rune is an alias for int32 and is equivalent to int32 in all ways. It is // used, by ...
- rune 数据类型
// rune is an alias for int32 and is equivalent to int32 in all ways. It is // used, by convention, ...
- 浅析Java数据类型
前言: 该系列会辅以MindMap进行说明. 下面会贴两张我不同时期画的Java数据类型的思维导图,本篇主要侧重于Java的8种基本类型 MindMap-1 这张MindMap主要是根据 菜鸟教程+参 ...
- TypeScript入门二:基本数据类型
浅析基本数据类型 TypeScript类型解析 一.浅析基本数据类型 首先有一个问题TypeScript是一门编译型语言?还是解释性语言?显然已经不能被这两个分类来区分,TypeScript的并不是为 ...
- Go语言学习之3 流程控制、函数
主要内容: 1. strings和strconv使用2. Go中的时间和日期类型3. 指针类型4. 流程控制5. 函数详解 1. strings和strconv使用 //strings . strin ...
- GO:字符串Slice后乱码问题
遇到的问题:用Slice 直接截取字符串的时候会出现乱码现象 package main import ( "fmt" ) func main() { str := "我的 ...
- Go中rune类型浅析
一.字符串简单遍历操作 在很多语言中,字符串都是不可变类型,golang也是. 1.访问字符串字符 如下代码,可以实现访问字符串的单个字符和单个字节 package main import ( &qu ...
- [一]class 文件浅析 .class文件格式详解 字段方法属性常量池字段 class文件属性表 数据类型 数据结构
前言概述 本文旨在讲解class文件的整体结构信息,阅读本文后应该可以完整的了解class文件的格式以及各个部分的逻辑组成含义 class文件包含了java虚拟机指令集 和 符号表 以及若 ...
随机推荐
- 巧用同步请求处理react页面刷新问题
很多时候,我们会遇到这种情况,组件加载需要请求后台数据,然后填充组件.那么我们一般会这样处理:如[使用异步请求的方式]代码: 加载组价的时候,未获得数据,render一个空的div: 然后异步请求数据 ...
- 20190226_xlVba提取查新标题和关键词
Sub MainProc() Dim Sht As Worksheet Dim Wb As Workbook Set Wb = Application.ThisWorkbook Set Sht = W ...
- script利用src引用外部js文件,如果内部嵌套了js代码呢
<script src='test.js' defer async> var a = 5; </script> 这个时候 var a = 5;会被忽略.
- POJ-3233 Matrix Power Series 矩阵A^1+A^2+A^3...求和转化
S(k)=A^1+A^2...+A^k. 保利求解就超时了,我们考虑一下当k为偶数的情况,A^1+A^2+A^3+A^4...+A^k,取其中前一半A^1+A^2...A^k/2,后一半提取公共矩阵A ...
- MYSQL 总结——2
1.mysql限制显示条目数:Limit, Offset 图片网址:https://sqlbolt.com/lesson/filtering_sorting_query_results 实例: SE ...
- 广工十四届校赛 count 矩阵快速幂
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6470 题意:求,直接矩阵快速幂得f(n)即可 构造矩阵如下: n^3是肯定得变换的,用二项式展开来一点 ...
- python url 下载并保存
方法一:用urllib import jsonimport urllib url_model='{"version":"2","url":& ...
- LeetCode Rotatelmage
---恢复内容开始--- You are given an n x n 2D matrix representing an image. Ratate the image by 90 degrees( ...
- extern介绍
存储类说明符extern.之前说过auto (auto int a:)extern的作用是:修饰变量/函数声明,表示是外部变量. e本身就是一个全局变量,所以在全局变量这个位置,加不加extern 都 ...
- VM for Linux 版本的Bundle格式文件的安装
VM for Linux 版本的安装步骤: 下面链接下载VM程序包 : https://www.vmware.com/products/workstation-pro/workstation-pro- ...