Golang的学习笔记(6)--Go基本类型与运算符
目录
Go的基本类型
- 布尔类型bool
- 长度:1字节
- 取值:布尔类型的取值只能是true或者false,不能用数字来表示
- 整型
- 通用整型 int / uint(有符号 / 无符号,下面也类似)
- 长度:根据运行平台可能为32(4个字节)位或者64位(8个字节)
- 8位整型 int8 / uint8
- 长度:1个字节
- 取值范围:-128~127 / 0~255
- 16位整型 int16 / uint16
- 长度:2个字节
- 取值范围:-32768~32767 / 0~65535
- 32位整型 int32 / uint32
- 长度:4个字节
- 取值范围:-\frac{2^{32}}{2} ~ \frac{2^{32}}{2}-1 / 0~2^{32}-1
- 64位整型 int64 / uint64
- 长度:8个字节
- 取值范围:-\frac{2^{64}}{2} ~ \frac{2^{64}}{2}-1 / 0~2^{64}-1
- 浮点型
- 32位浮点型float32
- 长度:4个字节
- 小数点位数:精确到7小数位
- 64位浮点型float64
- 长度:8个字节
- 小数点位数:精确到15小数位
- 复数
- 32位实数和虚数complex64
- 64位实数和虚数complex128
- 足够保存指针的32位或64位整型:uniptr
- 其它值类型
- array、 struct、string
- 引用类型
- slice、map、chan
- 接口类型:interface
- 函数类型:func
type MONEY intMONEYint
type(
整数 int32
小数 float64
)
var a 整数 = 1
byteruneuint8uint32byterune
类型零值
零值并非空值,而是当变量被声明为某种类型后的默认值。通常情况下数值类型的默认值为0,bool类型的默认值为false,string类型的默认值为空字符串
Go的运算符
Go中的运算符都是从左往右结合的,一元运算符只可以用作一个值的操作(作为后缀),而二元运算符则可以和两个值或者操作数结合(作为中缀)。优先级越高的运算符可以优先执行,下面从上到下表示各个运算符优先级从高到低:
- ^ ! (一元运算符:按位取反,逻辑非)
- * / % << >> & &^ (乘、除、取余、左移、右移、按位与、按位清零)
- + - | ^ (加、减、按位或、异或)
- == != < <= >= > (等于、不等、小于、小于等于、大于等于、大于)
- <- (用于channel)
- && (逻辑与)
- || (逻辑或)
当然,可以通过括号来提升某个表达式的运算优先级
逻辑运算符
!
!true -> false
!false -> true
||
true || true -> true
true || false -> true
false || true -> true
false || false -> false
&&
true || true -> true
true || false -> false
false || true -> false
false || false -> false
值得注意的是,在 Go 语言中,&& 和 || 具有短路性质,当运算符左边表达式的值已经能够决定整个表达式的值的时候(&& 左边的值为 false,|| 左边的值为 true),运算符右边的表达式将不会被执行。利用这个性质,如果你有多个条件判断,应当将计算过程较为复杂的表达式放在运算符的右侧以减少不必要的运算
位运算 符(只能用于整型)
&|^
^
func main(){
var i uint8 = 20
fmt.Println(^i,^20) // 输出结果是:235 -21
}
i^i^0001 0100 = 1110 101120^
&^
4 &^ 5 -> 101 &^ 100 = 001
<<>>num << nnum >> n
算术运算符
+-*//%a = a + ba += b-=*=/=%=++--n = i++