数据类型
先来介绍一下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