这篇文章将主要内容为Go语言中的数据类型
由于我是首先学习的Java编程语言,因此把Java的数据类型列举出来,对比一下,既复习又帮助区分一下
Java中的数据类型:
在Java中,数据类型主要分为两大类:基本数据类型和引用数据类型。
一、基本数据类型:
整型:
byte:占用1个字节,取值范围是-128到127。 short:占用2个字节,取值范围是-32768到32767。 int:占4个字节,取值范围是-2,147,483,648到2,147,483,647。int也是最常用的数据类型。 long:占用8个字节,取值范围比前三种更大。
浮点型:
float:占用4个字节,依赖于系统架构。 double:占用8个字节,依赖于系统架构。
还有两种特殊的:
char:占用2个字节,可以表示一个Unicode字符。 布尔型:
boolean:这种类型在不同的机器间,并不存在明确的大小,只有两个可能的取值:true或false。
二、引用数据类型: 由于Java是面向对象的语言,除了基本数据类型,其余的数据类型都是引用数据类型,也就是说它们的值实际上是对内存中对象位置的引用。当创建一个新的对象时,Java会在内存中分配空间,并将新对象放在这个空间上。
引用数据类型主要包括:
类(Class) 接口(Interface) 数组 以具体的类(如String类、Scanner类等)及数组为例,这些都属于引用数据类型。 在数组中,我们可以存放多个基本数据类型或者引用类型的值,而且所有值的类型必须相同。
Go中的数据类型
在Go语言中,数据类型被分为几个大类:基本类型、复合类型、引用类型和接口类型。
基本类型:
- 布尔型:bool,值是 true 或 false,默认值是 false。
- 整型:int 或 uint 代表 32-bit 或 64-bit 的整数取决于目标平台。除此以外还有以下特定长度的整数类型:rune, int8, int16, int32, int64, byte, uint8, uint16, uint32, uint64。其中 rune 是 int32 的别称,byte 是 uint8 的别称。
- 浮点型:float32 或 float64。
- 复数类型:complex64(实部和虚部都是 float32)或 complex128(实部和虚部都是 float64)。
- 字符串:string,它们是不可变的。
- 字符型:rune,代表一个 Unicode Code Point,与 int32 类型相同。
复合类型:
- 数组:具有固定长度并且含有相同类型元素的序列。 例如:var a [5]int
- 结构体:由一系列具有各自的类型和名称的字段组成的聚合。 例如:type Person struct { name string; age int }
- 切片:与数组类似,但其长度可以动态改变。 例如:var a []int
- 映射:无序的键值对的集合。 例如:var m map[string]int
引用类型:
- 指针:指向存储值的内存地址。 例如:var p *int;
- 切片:作为数组结构的一部分,包含一个指向数组的指针,长度和容量。
- 映射:无序的键值对集合,所有的键都是唯一的,并且必须是同一类型的,并且通过它往映射里写入值时,同时也会创建一个新值的副本。
- 函数:是一种引用类型,它可以被赋值给一个变量然后通过这个变量来调用该函数。Go 支持高阶函数和用户自定义函数。 例如: func add(x int, y int) int { return x + y }
接口类型:它是方法签名的集合,实现了这些方法的任何值都表示为接口类型的值。