Go 是一种强类型语言。 这意味着你声明的每个变量都绑定到特定的数据类型,并且只接受与此类型匹配的值。
Go 有四类数据类型:
- 基本类型:数字、字符串和布尔值
- 聚合类型:数组和结构
- 引用类型:指针、切片、映射、函数和通道
- 接口类型:接口
整数数字
一般来说,定义整数类型的关键字是 int
。 但 Go 还提供了 int8
、int16
、int32
和 int64
类型,其大小分别为 8、16、32 或 64 位的整数。 当你只使用 int
时,32 位系统上的大小为 32 位,64 位系统上则为 64 位(大多数情况下如此,不过在不同计算机上或有所不同)。 如果需要将值表示为无符号数字,则可以使用 uint
,但仅当有特定原因时才使用此类型。 此外,Go 还提供 uint8
、uint16
、uint32
和 uint64
类型。
浮点数字
Go 提供两种浮点数大小的数据类型:float32
和 float64
。 如果需要存储较大的数字,则可以使用这些类型,这些类型无法适应前面提到的任何一个整数类型。 这两种类型的区别是它们可以容纳的最大位数。
你可以使用 math
包中提供的 math.MaxFloat32
和 math.MaxFloat64
常量来查找这两种类型的限制
package main import "math" func main() { println(math.MaxFloat32, math.MaxFloat64) }
布尔型
布尔类型仅可能有两个值:true
和 false
。 你可以使用关键字 bool
声明布尔类型。 Go 不同于其他编程语言,在 Go 中,你不能将布尔类型隐式转换为 0 或 1。 你必须显式执行此操作。
字符串
最后,让我们看一下编程语言中最常见的数据类型:string。 在 Go 中,关键字 string
用于表示字符串数据类型。 若要初始化字符串变量,你需要在双引号("
)中定义值。 单引号('
)用于单个字符
默认值
到目前为止,几乎每次声明变量时,都使用值对其进行了初始化。 但与在其他编程语言中不同的是,在 Go 中,如果你不对变量初始化,所有数据类型都有默认值。 此功能非常方便,因为在使用之前,你无需检查变量是否已初始化。
下面列出了我们目前浏览过类型的几个默认值:
int
类型的0
(及其所有子类型,如int64
)float32
和float64
类型的+0.000000e+000
bool
类型的false
string
类型的空值