和所有编程语言一样,Go语言中可以定义常量和变量,这篇笔记我们简单介绍一下相关用法。
变量使用var
关键字定义,和其它语言语法不同的是,Go语言的数据类型总是写在后面。
var i int = 1
Go语言编译器支持自动类型推导,如果声明时直接赋值,是可以省略数据类型的;更进一步,使用:=
操作符也可以实现变量的声明和定义,此时连var
也可以省略了。
// 声明变量并自动类型推导
var i = 1
// 更简短的写法
i := 1
Go语言也支持多个变量同时声明,写法例子如下。
// 声明3个int型变量
var i, j, k int = 1, 2, 3
// 声明3个变量,自动推导其类型
var i, j, k = 1, true, "hello"
// var()多个变量组合声明
var (
i int
j bool
k string = "hello"
)
对于一组相关的变量,我们推荐使用组合声明,提高代码的可读性。
此外我们还需要知道的一点是,变量声明后没有赋值,默认数值类型会初始化为0
,布尔类型初始化为false
,字符串类型初始化为空字符串""
。尽管Go有着这些默认行为,但我们还是不建议依赖这些默认行为编写代码,否则一些代码逻辑可能让对Go不是那么熟悉的C、Java程序员感到迷惑。
常量使用const
关键字声明,常量声明时必须赋值,其它和变量相同。
const i int = 1
当然,常量也同样支持组合声明。
const (
i int = 1
j bool = false
k string = "hello"
)
Go中类型转换和C差不多,使用类似T()
的函数,T
为类型名,例子代码如下:
var i = 1
var f float32
f = float32(i)
C语言的隐式类型转换给许多人都造成了困惑和麻烦,Go中没有隐式类型转换这一恼人的特性,所有类型转换都必须指明,上面例子中如果去掉float32()
就会报错。