五、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:数据类型及操作的更多相关文章

  1. SQL Server中的Image数据类型的操作

    原文:SQL Server中的Image数据类型的操作 准备工作,在库Im_Test中建立一张表Im_Info,此表中有两个字段,分别为Pr_Id (INT),Pr_Info (IMAGE),用来存储 ...

  2. Redis入门教程:特性及数据类型的操作

    虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了解并不全面,下面是一个比较系统的Redis介绍,对Redis的特性及各种数据类型及操作进行了介绍.是一个很不错的Redis入门 ...

  3. 缓存数据库-redis数据类型和操作(list)

    转: 狼来的日子里! 奋发博取 缓存数据库-redis数据类型和操作(list) 一:Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部( ...

  4. VC++常用数据类型及其操作详解

    原文地址:http://blog.csdn.net/ithomer/article/details/5019367 VC++常用数据类型及其操作详解 一.VC常用数据类型列表 二.常用数据类型转化 2 ...

  5. golang学习笔记16 beego orm 数据库操作

    golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...

  6. Redis数据类型及其操作

    redis数据类型即操作 1. 字符串 set 设置字符串 格式: set key value 例子: set name kainhuck get 获取字符串的值 格式: get key 例子: ge ...

  7. Redis常用数据类型以及操作

    Redis常用数据类型以及操作 目录 Redis常用数据类型以及操作 一.String数据类型 1. SET/GET/APPEND/STRLEN 2. INCR/DECR/INCRBY/DECRBY ...

  8. golang基础之二-基本数据类型和操作符

    文件名&关键字&标识符 所有go源码都是以.go结尾 标识符以字母或下划线开头,大小写敏感 下划线_是特殊标识符,用户忽略结果 保留关键字 导入包时可以设置别名 下面是保留关键字: b ...

  9. Redis数据类型和操作

    <"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...

随机推荐

  1. Go命令官方指南【原译】

    启动错误报告 编译包和依赖项 删除目标文件和缓存的文件 显示包或符号的文档 打印Go环境信息 更新包以使用新API Gofmt(重新格式化)包源 通过处理源生成Go文件 下载并安装包和依赖项 编译并安 ...

  2. 以慕课网日志分析为例-进入大数据Spark SQL的世界

    下载地址.请联系群主 第1章 初探大数据 本章将介绍为什么要学习大数据.如何学好大数据.如何快速转型大数据岗位.本项目实战课程的内容安排.本项目实战课程的前置内容介绍.开发环境介绍.同时为大家介绍项目 ...

  3. 怎么给PDF去除页眉页脚

    PDF文件我们现在都会使用到,但有时需编辑PDF文件的时候,小伙伴们都知道该怎么操作吗,不知道的小伙伴不用担心,今天小编就来跟大家分享一下怎么删除PDF文件的页眉页脚,我们一起来看看下面的文章吧 操作 ...

  4. java ReentrantLock结合条件队列 实现生产者-消费者模式 以及ReentratLock和Synchronized对比

    package reentrantlock; import java.util.ArrayList; public class ProviderAndConsumerTest { static Pro ...

  5. 获取clock ticks per second

    #include <sys/syscall.h> #include <stdio.h> #include <unistd.h> int main() { print ...

  6. MYSQL双主全库同步复制

    环境: A.B两台服务器分别安装mysql-5.7.18服务端,配置成互为主从同步. linux系统版本为CentOS7 A服务器ip:192.168.1.7   主机名:test1 B服务器ip:1 ...

  7. AspNet Core下利用 app-metrics+Grafana + InfluxDB实现高大上的性能监控界面

    在日常系统工作中,我们为了洞察系统的问题和运作情况通常会记录日志的方式来进行分析,但是在很多情况下都是被动的在出问题后才会去查日志.在很多时候,我们可能更需要相对实时的了解整个系统或者某一时段的运行的 ...

  8. Centos7使用kubeadm部署kubernetes-1.11.2

    1.安装方式 1.  传统方式,以下组件全部运行在系统层面(yum或者rpm包),都为系统级守护进程 2.  kubeadm方式,master和node上的组件全部运行为pod容器,k8s也为pod ...

  9. Akka.net 性能测试兼使用小技巧

    最近想研究一下分布式开发,先拿了akka.net 跑一下性能 参考自己写个网络实现,一般在本机通讯,300M每秒的传输率,作为参考 嗯,先说结果,用Akka.net直接发bytearray,最后也只有 ...

  10. 使用snap

    snap是一个Linux上的包管理器,其目的是提供跨平台的包管理 提到包管理我们会想到python的 pip conda等,以及 apt等等 snap提供了一个 统一的体验在各种Linux发行版上 关 ...