4.5. 基本类型和运算符
- 布尔型的值只可以是常量 true 或者 false
var b bool = true
- 可以使用
==
或!=
来判断2个布尔值是否相同 - 布尔值的命名可以用
is
或者Is
开头能够很好地提升代码的可读性,如:isSorted
、isFinished
、isVisible
4.5.2.1 整型 int 和浮点型 float
Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。
-
Go 也有基于架构的类型,例如:int、uint 和 uintptr。
- int 和 uint 在 32 位操作系统上,它们均使用 32 位(4 个字节),在 64 位操作系统上,它们均使用 64 位(8 个字节)。
- uintptr 的长度为足够存放一个指针。
Go 语言中没有 float 类型。
-
与操作系统架构无关的类型都有固定的大小
整数:- int8(-128 -> 127)
- int16(-32768 -> 32767)
- int32(-2,147,483,648 -> 2,147,483,647)
- int64(-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807)
无符号整数:
- uint8(0 -> 255)
- uint16(0 -> 65,535)
- uint32(0 -> 4,294,967,295)
- uint64(0 -> 18,446,744,073,709,551,615)
浮点型(IEEE-754 标准):
- float32(+- 1e-45 -> +- 3.4 * 1e38)
- float64(+- 5 1e-324 -> 107 1e308)
int 型是计算最快的一种类型。
尽可能地使用 float64,因为 math 包中所有有关数学运算的函数都会要求接收这个类型。
4.5.2.3 位运算
二元运算符
- 按位与
&
:
1 & 1 -> 1
1 & 0 -> 0
0 & 1 -> 0
0 & 0 -> 0
- 按位或
|
:
1 | 1 -> 1
1 | 0 -> 1
0 | 1 -> 1
0 | 0 -> 0
- 按位异或
^
:
1 ^ 1 -> 0
1 ^ 0 -> 1
0 ^ 1 -> 1
0 ^ 0 -> 0
- 位清除
&^
:将指定位置上的值设置为 0
如果运算符左右侧数据相同,则值取0,若不同取左侧数据
a := 1
b := 10
c := b &^ a // a:1, b:10, c:10
//----------------------------
a := 10
b := 10
c := b &^ a // a:10, b:10, c:0