Go的数据类型
1.基本数据类型
- bool布尔型(判断不是true就是false)
其中布尔的值只可以是常量true或者false - Numerlc Types数值类型
-
整数类型
int8 有符号8位整数(-128到127) int16 有符号16位整数(-32768到32767) int32 有符号32位整数(-2147483648到2147483647) int64 有符号64位整数(-9223372036854775808到9223372036854775807) uint8 无符号8位整数(0到255) uint16 无符号16位整数(0到65535) uint32 无符号32位整数(0到4294967295) uint64 无符号64位整数(0到18446744073709551615)
-
浮点数
float32 IEEE-754 32位浮点型数 float64 IEEE-754 64位浮点型数 complex64 32位实数和虚数 complex128 64位实数和虚数
-
其他
byte 类似uint8 rune 类似int32 unit和int 32或者64位取决于系统 uintptr 无符号整型,用于存放一个指针
-
- string字符串
- 由多个byte组成的一个集合
计算机是如何进行寻址(重点)
再讲复合数据类型之前我们还要聊一聊计算机是如何查找数据的数据的存储方式才能更好的去理解数据类型的本质
对于计算机而言,cpu在运行时,读取内存数据,首先要指定存储单元的地址,就是要确实读写哪段数据
- 存储单元的地址(地址信息)
计算机的地址信息是通过地址总线寻址,指定存储单元,而最小的寻址单位是Byte和Byte的最小单位bit,1Byte=8
bit(也就是说计算机会通过地址总线给每一个字节分配一个地址)
然后我们从上所述就知道了基本的数据类型在内存中是一段存储空间(例如int8占八位),而类型决定了这段内存空间的大小,而在读取这段存储空间的时候通常是通过首个(Byte)字节的地址然后根据类型的步长来获取这段地址里面的数据
复合数据类型有
然后我们开始讲复合数据类型
- array
首先数组就是一个连续的相同类型的集合
var 变量名 [数组长度]类型
然后明确数组是不可变的线性存储方式(也就是说数组是不能在已有大小的基础上去扩容的)
原因也很简单,扩容就会造成内存泄漏
- slice
同数组类似,也叫作变长数组或者动态数组
是一个引用类型的容器,指向了一个底层数组 - map
- function
- pointer
- struct
- interface
- channel