本文内容纲要:
- 0. 基本数据类型比较
- 1. 布尔类型
- 2. 数字类型
- 2.1 整形和浮点型
- 2.2 复数
- 2.3 位运算
- 2.4 运算符
- 3. 字符类型
0. 基本数据类型比较
1. 两个类型相同的值可以使用相等 == 或者不等 != 运算符来进行比较并获得一个布尔型的值;
2. 如果值的类型是接口(interface),它们也必须都实现了相同的接口;
3. 如果其中一个值是常量,那么另外一个值的类型必须和该常量类型相兼容的
1. 布尔类型
布尔型的值只可以是常量 true 或者 false;
!&&||
短路特性:
&& 和 || 是具有快捷性质的运算符,当运算符左边表达式的值已经能够决定整个表达式的值的时候,运算符右边的表达式将不会被执行
2. 数字类型
2.1 整形和浮点型
Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码;
基于架构的类型,例如:int、uint 和 uintptr,没有 float类型(只有 float32 和 float64),没有 double 类型;
intuint
uintptr
与操作系统架构无关的类型都有固定的大小:如 int8,int16,int32,int64,uint8,uint16,uint32,uint64,float32,float64
math包中的函数接收的数据类型均为 float64
a := uint64(0)
前缀0表示8进制数,前缀0x表示16进制数,e表示10的联乘
2.2 复数
reim
var re complex128 = 1 + 2i
// 获取实数部分
real := real(re)
// 获取虚数部分
Imaginary := imag(re)
fmt.Println("real number:", real,"Imaginary number:", Imaginary)
// 格式化输出
fmt.Printf("re:%v\n",re)
// 实数或虚数为浮点型是可通过complex生成实数
var re2 = complex(2, 3)
fmt.Println(re2)
2.3 位运算
位运算只能用于整数类型的变量,且需当它们拥有等长位模式时;
%b是用于表示位的格式化标识符;
& :都是1,则为1,否则为0
| :有一个为1则为1
^ :相同为0,不同为1
&^ :位清除,将 n 转换为2进制后,n 值为1的位置 s 对应为 0,s 剩余位置的值 为 m 对应位置的值
var n = 12 // 1100
var m = 13 // 1101
s := m &^ n
fmt.Printf("%b\n",s) // 输出 1
<< :位左移,2 << 1,将2左移1位
>> :位右移,2 >> 1,将2右移1位
2.4 运算符
由上至下代表优先级由高到低
^ !
/ * % << >> & &^
+ - | ^
== != < <= >= >
<-
&&
||
2.4.1 位运算符
&、 |、 ^、 &^
2.4.2 逻辑运算符
==、 !=、 <、 <=、 > 、 >= 、&& 、||
2.4.3 算数运算符
用于整数和浮点型:+、-、*、/、%
a = b + c,可简写为 a+=b,改写法也适用于 -=、*=、/=、%=
整数除以0可能导致程序崩溃,浮点数除以0.0会返回一个无穷尽结果,用 +Inf 表示
3. 字符类型
byteuint8var ch byte = 'A'
本文内容总结:0. 基本数据类型比较,1. 布尔类型,2. 数字类型,2.1 整形和浮点型,2.2 复数,2.3 位运算,2.4 运算符,3. 字符类型,