天天看点

Golang数据类型和变量

数据类型

先来介绍一下Golang的数据类型。

布尔型

bool

类型代表逻辑值,有真值

true

和假值

false

两种取值。

整数类型

整数类型有如下几种,这些整数都是有符号的类型,它们的无符号版本是类型名前面添加

u

,例如

uint32

类型 长度
int8 1字节
int16 2字节
int32 4字节
int64 8字节

除此以外,还有比较特殊的几种类型。

备注
byte 是int8的别名
int 和系统有关 有符号整数
uint 无符号整数
uintptr 指针类型
rune 是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