天天看点

Go语言学习心得--Go语言的数据类型

在 Go 编程语言中,数据类型用于声明函数和变量。

数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

这里区分一下,我是java出身,顺带提一嘴java中的数据类型

Java是强类型语言,所以Java对于数据类型的规范会相对严格。数据类型是语言的抽象原子概念,可以说是语言中最基本的单元定义,在Java里面,本质上讲将数据类型分为两种:

基本类型和引用数据类型。

基本类型:

简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。

引用数据类型:

 Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。

 也就是说 ,不同类型的变量在内存中分配的字节数不同,同时存储方式也是不同的。

 说道内存中的存储,那就来再说一下堆栈吧

 

 1)**基本数据类型的存储原理:**所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型;

2)**引用类型的存储原理:**引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;

区别:基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的(需要java中的栈、堆概念),

至于具体的堆栈,等有时间我在剖析一下,现在回归主体,Go语言的数据类型

  1. 布尔型 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
  2. 数字类型 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。
  3. 字符串类型: 字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
  4. 派生类型:

    包括:

    (a) 指针类型(Pointer)

    (b) 数组类型

    © 结构化类型(struct)

    (d) Channel 类型

    (e) 函数类型

    (f) 切片类型

    (g) 接口类型(interface)

    (h) Map 类型

今天我们先把这个数字类型给解释一下,弄明白了,以后再去研究派生出来的类型。

数字类型

int、uint 和 uintptr。

序号 类型和描述
1 uint8 无符号 8 位整型 (0 到 255)
2 uint16 无符号 16 位整型 (0 到 65535)
3 uint32 无符号 32 位整型 (0 到 4294967295)
4 uint64 无符号 64 位整型 (0 到 18446744073709551615)
5 int8 有符号 8 位整型 (-128 到 127)
6 int16 有符号 16 位整型 (-32768 到 32767)
7 int32 有符号 32 位整型 (-2147483648 到 2147483647)
8 int64有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)

浮点型:

序号 类型和描述
1 float32 IEEE-754 32位浮点型数
2 float64 IEEE-754 64位浮点型数
3 complex64 32 位实数和虚数
4 complex128 64 位实数和虚数
浮点数分为float32和float64两种类型。
只有整数部分的浮点数,要加小数点标识,例如浮点数1的标识为1.0。
对于整数字面量和浮点数字面量,Go根据使用的场合,会自动 整数->浮点数或浮点数->整数 转换。
           

其他数字类型

序号 类型和描述
1 byte 类似 uint8
2 rune 类似 int32
3 uint 32 或 64 位
4 int 与 uint 一样大小
5 uintptr 无符号整型,用于存放一个指针

以上就是简单的数据类型,等明日或者后天继续更新学习进程,有需要的可以看一下