Golang Go Go Go part3:数据类型及操作
五、Go 基本类型
1、基本类型种类
布尔值: bool 长度 1字节 取值范围 true, false
注意事项:不可用数字代表 true 或 false
整型: int/uint 根据运行平台可能为32位或64位
8位整型: int8/uint8 长度: 1字节 取值范围:-128 ~127 / 0 ~ 255
字节型: byte (uint8别名),byte类型一般用于强调数值是一个原始的数据而不是 一个小的整数
16位整型: int16/uint16 长度:2字节 取值范围:-32768 ~ 32767 或 0 ~ 65535
32位整型: int32(rune)/uint32 长度: 4字节 取值范围: -2^32/2 ~ 2^32/2-1 或 0 ~ 2 ^ 32 - 1
说明:rune 是有符号的32位整型 uint32 的别名, 通常用于表示一个 Unicode 码点。rune 和 int32 可以互换使用。
64位整型: int64/uint64 长度: 8字节 取值范围: -2^64/2 ~ 2^64/2 - 1 或 0 ~ 2 ^ 64 - 1
浮点型 float32 长度: 4字节 小数位: 精确到7
浮点型 float64 长度: 8字节 小数位: 精确到15小数位
复数 complex64 长度: 8字节
复数 complex128 长度: 16字节
足够保存指针的32位或64位的无符号整数类型: uintptr
说明:uintptr 在32平台下为4字节,在64位平台下是8字节
其他值类型:string、 array 、 struct
引用类型: slice(切片) 、 map(字典) 、 channel(管道)
接口类型: interface
函数类型: func
2、整形数据类型
go 种属于整形的数据有很多种:
rune 类型是 Unicode 字符类型,和 int32 类型等价,通常用于表示一个 Unicode 码点。rune 和 int32 可以互换使用。
byte 是uint8类型的等价类型,byte类型一般用于强调数值是一个原始的数据而不是 一个小的整数。
uintptr 是一种无符号的整数类型,没有指定具体的bit大小但是足以容纳指针。 uintptr类型只有在底层编程是才需要,特别是Go语言和C语言函数库或操作系统接口相交互的地方。
有符号整数采用 2 的补码形式表示,也就是最高 bit 位用作表示符号位,一个 n bit 的有 符号数的值域是从 -2^{n-1} 到 2^{n-1}−1。例如,int8类型整数的值域是从-128 到 127, 而uint8类型整数的值域是从0到255。
todo:
| 分类 | 类型名称 | 有无符号 | bit数 | 零值 | 示例 | 字符串格式化 | 备注 |
|---|---|---|---|---|---|---|---|
| 布尔型 | bool | -- | 1 | false | var isPC bool = true | %t,%v(所有类型的默认格式化输出都是%v) | 布尔型的两个值是常量,不能使用数字0 和1替代 |
| 整数 | int8 | Yes | 8 | 0 | 10进制%d,8进制%o ,16进制%x或%X | ||
| int16 | Yes | 16 | 0 | 同上 | |||
| int32 | Yes | 32 | 0 | 同上 | |||
| int64 | Yes | 64 | 0 | 同上 | |||
| uint8 | No | 8 | 0 | 同上 | |||
| uint16 | No | 16 | 0 | 同上 | |||
| uint32 | No | 32 | 0 | 同上 | |||
| uint64 | No | 64 | 0 | 同上 | |||
| int | Yes | 等于cpu位数(32/64) | 0 | 同上 | |||
| uint | No | 等于cpu位数 | 0 | 同上 | |||
| byte | No | 与 int8 等价 | 0 | %c %U则输出:U+hhhh | 单字节字符,与传统 ASCII 码对应,包含在单引号中。 | ||
| rune | Yes | 与 uint32 等价 | 0 | %c %U则输出:U+hhhh | 多字节字符,与 Unicode code points对应,包含在单引号中。 | ||
| uintptr | No | 等于cpu位数 | 0 | uintptr 在32位平台下为4字节(4*8bit),在64位平台下是8字节(8*8bit) | |||
| 浮点数 | float32 | -- | 32 | 0.0 | %g,%f则对应浮点类型的指针;%e则对应科学计数法办输出;%n.mg用于指定小数位输出 | ||
| float64 | -- | 64 | 0.0 | ||||
| 复数 | complex64 | -- | 64 | 0 | %v, 另外也可以使用%f输出实部和虚部 | 实数与虚数各占32bit,实部由浮点数表示,虚部由浮点数以及小写字母“i”表示 | |
| complex128 | -- | 128 | 0 | %v, 另外也可以使用%f输出实部和虚部 | 实数与虚数各占64bit,实部由浮点数表示,虚部由浮点数以及小写字母“i”表示 | ||
| 字符串 | string | 包含在双引号中,单行,字符前面带斜杠的表示转义,不可变字节数组 | |||||
| raw string | "" | 包含在反引号中,可以跨越多行,没有转义字符功能 | |||||
3、变量数据类型的转换:
go 中不存在隐式转换,所有类型转换必须显式声明
转换只能发生在两种相互兼容的类型之间, 布尔类型不可以和数字进行转换
不管值的具体大小,int、uint和uintptr是不同类型的兄弟类型。其中int和int32也是 不同的类型, 即使int的大小也是32bit,在需要将int当作int32类型的地方需要一个显式 的类型转换操作,反之亦然。
var a float32 = 1.1
b := int(a) //浮点型可以转换为 int型,这有点像 java
4、类型零值
零值并不等于空值,而是当变量被声明为某种类型后未赋值时的默认值,通常情况下,值类型默认值为0, bool为false, string为空字符串。
5、类型的别名
go 可以为基本数据类型、函数、接口等任意的类型定义类型别名,语法是
type 类型别名 = 类型
//批量声明类型别名
type{
i = int
s = string
fun = func()
inter = interface{}
} var x i = 1 //声明一个 int 形变量
to be continued
6、数据类型与格式化输出
六、操作符及数据运算
1、数学运算
https://www.cnblogs.com/fengbohello/p/5854108.html
2、比较运算
3、布尔运算
4、二进制位移运算
Golang Go Go Go part3:数据类型及操作的更多相关文章
- SQL Server中的Image数据类型的操作
原文:SQL Server中的Image数据类型的操作 准备工作,在库Im_Test中建立一张表Im_Info,此表中有两个字段,分别为Pr_Id (INT),Pr_Info (IMAGE),用来存储 ...
- Redis入门教程:特性及数据类型的操作
虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了解并不全面,下面是一个比较系统的Redis介绍,对Redis的特性及各种数据类型及操作进行了介绍.是一个很不错的Redis入门 ...
- 缓存数据库-redis数据类型和操作(list)
转: 狼来的日子里! 奋发博取 缓存数据库-redis数据类型和操作(list) 一:Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部( ...
- VC++常用数据类型及其操作详解
原文地址:http://blog.csdn.net/ithomer/article/details/5019367 VC++常用数据类型及其操作详解 一.VC常用数据类型列表 二.常用数据类型转化 2 ...
- golang学习笔记16 beego orm 数据库操作
golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...
- Redis数据类型及其操作
redis数据类型即操作 1. 字符串 set 设置字符串 格式: set key value 例子: set name kainhuck get 获取字符串的值 格式: get key 例子: ge ...
- Redis常用数据类型以及操作
Redis常用数据类型以及操作 目录 Redis常用数据类型以及操作 一.String数据类型 1. SET/GET/APPEND/STRLEN 2. INCR/DECR/INCRBY/DECRBY ...
- golang基础之二-基本数据类型和操作符
文件名&关键字&标识符 所有go源码都是以.go结尾 标识符以字母或下划线开头,大小写敏感 下划线_是特殊标识符,用户忽略结果 保留关键字 导入包时可以设置别名 下面是保留关键字: b ...
- Redis数据类型和操作
<"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...
随机推荐
- Web前端-关于jQuerry
jQuery-The write less,do more,jacascript library 非常方便的js库,封装了许多有用的功能. 1.jq与js对象之间的转换 <script> ...
- eclipse导入本地的svn项目后不能在team提交更新
由于项目是在本地有svn检出,然后再想通过eclipse 修改然后在eclipse内部提交和更新,但是此时,team里并没有update和commit选项, 又不想重新再检出一次项目,怎么办? 可以在 ...
- spring-mybatis的整合
1.导入包 2.创建一个请求文件发送请求 <%@ page language="java" contentType="text/html; charset=UTF- ...
- 【玩转开源】BananaPi R2——移植RPi.GPIO 到 R2
1. 首先给大家介绍一下什么是RPi.GPIO. 简单去讲,RPi.GPIO就是一个运行在树莓派开发板上可以通过Python去控制GPIO的一个中间件. 现在我这边做了一个基础功能的移植,接下来大家可 ...
- Redis实战 - 2.list、set和Sorted Set
List Redis的List是通过Linked List(链表)来实现的String集合,所以插入数据的速度很快. 但是缺点就是在数据量比较大的时候,访问某个数据的时间可能会很长,但针对这种情况,可 ...
- status 返回当前请求的http状态码
status属性返回当前请求的http状态码,此属性仅当数据发送并接收完毕后才可获取.完整的HTTP状态码如下: 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分 101 ...
- 《ServerSuperIO Designer IDE使用教程》-4.增加台达PLC驱动及使用教程,从0到1的改变。发布:v4.2.3版本
v4.2.3 更新内容:1.优化数据存储部分,提高效率.2.修复数据库服务停止造成程序异常退出的现象.3.修复本机没有串口造成无法增加设备驱动的情况.4.增加编辑设备和监测点配置信息功能.5.增加台达 ...
- 异步简析之BlockingCollection实现生产消费模式
目前市面上有诸多的产品实现队列功能,比如Redis.MemCache等... 其实c#中也有一个基础的集合类专门用来实现生产/消费模式 (生产模式还是建议使用Redis等产品) 下面是官方的一些资料和 ...
- pycharm远程debug(内网环境,跳板机)
1.设置隧道 工具: secureCRT 1.新建跳板机连接session 2.选择刚建好的session --> Properties --> Port Forwarding --> ...
- Linux系统下一个冷门的RAID卡ioc0及其监控mpt-status
新接手了一台Linux服务器,准备检查是否有配置RAID.参考(http://mip.0834jl.com) 先查看是否有RAID卡: 复制代码 代码如下: # dmesg|grep -i raid ...