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--1falsevar isPC bool = true%t,%v(所有类型的默认格式化输出都是%v)布尔型的两个值是常量,不能使用数字0 和1替代
整数int8Yes80 10进制%d,8进制%o ,16进制%x或%X 
int16Yes160  同上 
int32Yes320  同上 
int64Yes640  同上 
uint8No80  同上 
uint16No160  同上 
uint32No320  同上 
uint64No640  同上 
intYes等于cpu位数(32/64)0  同上 
uintNo等于cpu位数0  同上 
byteNo与 int8 等价0 %c  %U则输出:U+hhhh单字节字符,与传统 ASCII 码对应,包含在单引号中。
runeYes与 uint32 等价0 %c  %U则输出:U+hhhh多字节字符,与 Unicode code points对应,包含在单引号中。
uintptrNo等于cpu位数0  uintptr 在32位平台下为4字节(4*8bit),在64位平台下是8字节(8*8bit)
浮点数float32--320.0  %g,%f则对应浮点类型的指针;%e则对应科学计数法办输出;%n.mg用于指定小数位输出 
float64--640.0   
复数complex64--640  %v, 另外也可以使用%f输出实部和虚部实数与虚数各占32bit,实部由浮点数表示,虚部由浮点数以及小写字母“i”表示
complex128--1280  %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、二进制位移运算

 

转载于:https://www.cnblogs.com/ecalf/p/10135676.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值