Go语言中的byte和rune区别、对比
Go语言中byte和rune实质上就是uint8和int32类型。byte用来强调数据是raw data,而不是数字;而rune用来表示Unicode的code point。参考规范:
uint8 the set of all unsigned 8-bit integers (0 to 255)
int32 the set of all signed 32-bit integers (-2147483648 to 2147483647)
byte alias for uint8
rune alias for int32
可以通过下面程序验证:
package main
import "fmt"
func byteSlice(b []byte) []byte {
return b
}
func runeSlice(r []rune) []rune {
return r
}
func main() {
b := []byte{0, 1}
u8 := []uint8{2, 3}
fmt.Printf("%T %T \n", b, u8)
fmt.Println(byteSlice(b))
fmt.Println(byteSlice(u8))
r := []rune{4, 5}
i32 := []int32{6, 7}
fmt.Printf("%T %T \n", r, i32)
fmt.Println(runeSlice(r))
fmt.Println(runeSlice(i32))
}
执行结果如下:
[]uint8 []uint8
[0 1]
[2 3]
[]int32 []int32
[4 5]
[6 7]
package main import (
"fmt"
) func main() {
var indexRuneTests = []struct {
s string
rune rune
out int
}{
//string用反引号能换行, 但不支持转义, rune是一个uint32,即一个unicode字符
{`as\n
df`, 'A', },
//用双引号不能换行, 但支持转义如"\n\t..", rune是一个uint32,即一个unicode字符
{"some_text\n=some_value", '=', },
{"☺a", '☺', },
{"a☻☺b", '☺', },
} fmt.Println("Hello, playground",indexRuneTests)
}
Hello, playground [{as\n
df } {some_text
=some_value } {☺a } {a☻☺b }]
Go语言中的byte和rune区别、对比的更多相关文章
- 浅谈Java语言中ArrayList和HashSet的区别
Java语言中ArrayList和HashSet的区别 2019-04-10 13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...
- 面试题----C语言中exit和return的区别
C语言中return和exit的区别 exit用于结束进程,返回的状态码是给操作系统使用或父进程使用的.return是堆栈返回,返回的值是给主调函数用的.主线程结束前会默认调用exit结束进程. ex ...
- Go语言中new和make的区别
Go语言中new跟make是内置函数,主要用来创建分配类型内存. new( ) new(T)创建一个没有任何数据的类型为T的实例,并返回该实例的指针: 源码解析 func new func new(T ...
- golang byte与rune区别
先看代码 package main import ( "fmt" ) func main() { var a = "hello world" var b = & ...
- c语言中%s和%d的区别
/************************************************************************* > File Name: ptr_both. ...
- Go语言中Goroutine与线程的区别
1.什么是Goroutine? Goroutine是建立在线程之上的轻量级的抽象.它允许我们以非常低的代价在同一个地址空间中并行地执行多个函数或者方法.相比于线程,它的创建和销毁的代价要小很多,并且它 ...
- Java编程语言中sleep()和yield()的区别
转自:http://developer.51cto.com/art/201003/189465.htm 1. Thread.yield(): api中解释: 暂停当前正在执行的线程对象,并执行 ...
- C语言中exit()与return的区别
整理自exit函数和return函数 1.exit函数和return函数的主要区别是: 1)exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的.main函数结束时也会隐式地调用e ...
- C语言中sizeof与strlen的区别
1.sizeof sizeof为编译时期被替换,不会等到程序运行再来判断,所以sizeof返回的是数组的总字节数 #include<stdio.h> int main() { ]={'a' ...
随机推荐
- 解决XP系统桌面图标蓝底
方法1:在桌面上点击右键,在"排列图标"里去掉"锁定桌面的web项目"的勾. 方法2:右键点击 的电脑 -- 属性 -- 高级 -- 点击"性能&qu ...
- 路由器数据统计SQL脚本
一.路由器部分 //[饼图]统计路由器在线.离线数量 SELECT COUNT(*) AS total, MINUTE)) ELSE NULL END) AS livecount, MINUTE)) ...
- ubuntu 18.04 安装 Redis
这篇博客写得不错,直接看这篇博客就OK了. https://wangxin1248.github.io/linux/2018/07/ubuntu18.04-install-redis.html
- 闭包可以存储变量(下标) 小demo
点击每一行弹出其下标
- MySQL基本命令(待更新...)
数据库操作SQL语句 show databases; 表操作SQL语句 数据库权限操作SQL语句 参考链接 :http://www.cnblogs.com/bzys/archive/2013/01/2 ...
- 《jQuery精品教程视频》视频目录
\day01\03-视频\02-使用js的缺点.avi; \day01\03-视频\03-jQuery初体验.avi; \day01\03-视频\04-什么是jQuery.avi; \day01\03 ...
- 解决微信小程序使用switchTab跳转后页面不刷新的问题
wx.switchTab({ url: '../index/index', success: function(e) { var page = getCurrentPages().pop(); if ...
- Django入门------基础(1)
基础 Django 是用 Python 写的一个自由和开放源码 web 应用程序框架.web框架是一套组件,能帮助你更快.更容易地开发web站点.当你开始构建一个web站点时,你总需要一些相似的组件: ...
- centos U盘挂载问题
查看u盘路径 fdisk -l Disk /dev/sda: 16.2 GB, 16236150784 bytes, 31711232 sectors Units = sectors of 1 * 5 ...
- 最简单的HashMap底层原理介绍
HashMap 底层原理 1.HashMap底层概述 2.JDK1.7实现方式 3.JDK1.8实现方式 4.关键名词 5.相关问题 1.HashMap底层概述 在JDK1.7中HashMap采用的 ...