数据类型
先来介绍一下Golang的数据类型。
布尔型
bool
类型代表逻辑值,有真值true
和假值false
两种取值。
整数类型
整数类型有如下几种,这些整数都是有符号的类型,它们的无符号版本是类型名前面添加u
,例如uint32
。
类型 | 长度 |
---|---|
int8 | 1字节 |
int16 | 2字节 |
int32 | 4字节 |
int64 | 8字节 |
除此以外,还有比较特殊的几种类型。
类型 | 长度 | 备注 |
---|---|---|
byte | 1字节 | 是int8的别名 |
int | 和系统有关 | 有符号整数 |
uint | 和系统有关 | 无符号整数 |
uintptr | 和系统有关 | 指针类型 |
rune | 4字节 | 是int32的别名,代表Unicode代码点 |
浮点数类型
有两种浮点数,单精度float32
和双精度float64
,类似于Java语言中的float
和double
。
复数类型
Golang支持复数类型,有complex64
和complex128
两种精度不同的复数类型。
字符串类型
字符串类型是string
。
类型默认值
对于布尔类型,默认值是false
;对于整数类型,默认值是0;对于字符串类型,默认值是空值字符串""
。
变量和常量
变量声明
Golang比较特殊的一点就是类型后置了。如果学习过C系的语言,我们会习惯int a
这样的类型 变量名
方式。不过这种方式在复杂的类型组合下不太直观,所以Golang采用了后置的类型声明方式。如果声明的时候不指定初始化值,就会使用对应类型的默认值。
//类型在变量名后面
var i int
如果一行声明多个变量且类型相同,可以只在最后一个变量上添加类型。
var x, y int
//声明的同时赋值
var a, b int = 3, 4
如果要声明的是局部变量(在函数内部的变量),可以使用另一种方式:=
,省略var
关键字。这时候必须在声明的时候同时给定初始值,变量类型则由初始值的类型推断。
func hey() {
k := 5
fmt.Printf("k=%d", k)
}
如果变量声明在函数外面,那么它就是一个全局变量。
类型转换
Golang不支持隐式类型转换,所有类型都需要显式转换。转换使用类型名(变量名)
的方式。
var count int = int(32.0)
常量声明
声明常量使用const
关键字,常量无法使用:=
方式声明。
const Pi = 3.1415926