数据类型及变量

Par @Martin dans le
Tags :

Go 内置以下基础类型

基础类型

另外, Go 还支持以下复合类型

复合类型

在这些基础类型之上 Go 还封装了下面这几种类型: intuintuintptr 等, 这些类型的特点在于使用方便, 但使用者不能对这些类型的长度做任何假设, 对于常规的开发来说, 用 intuint 就可以了, 没必要用 int8 之类明确指定长度的类型, 以免导致移植困难.

1.变量声明

Go 添加了 var 关键字, 变量的类型在变量名后声明.

var v1 int
var v2 string
var v3 [10]int // 数组
var v4 *int // 指针
var (
    v5 int
    v6 string
)


2. 变量初始化

var v1 int  // 编译器会将其初始化为零值
var v1 int = 10
var v2 = 20 // 编译器将自动推导类型
v3 := 30 // 短变量声明操作符, 编译器将自动推导类型


Go 建议:
任何时候, 创建一个变量并初始化为其零值, 习惯是使用关键字 var, 这种用法是为了更明确地表示一个变量被设置为零值;
如果变量被初始化为某个非零值, 就使用短变量声明操作符来创建变量.

3. 多重赋值

在 C/C++ 中要交换两个变量的值, 可能需要这样:

t = i;
i = j;
j = t;


而到了 go 中, 可以这样:

i, j = j, i


在介绍函数的多重返回值时, 将对其进行更加深入的介绍, 总而言之, 多重赋值功能让 Go 语言与 C/C++ 语言相比可以非常明显地减少代码行数.

4. 匿名变量

简单的来说, 可能通过 _ 来接受不被重视的值, 这个在 lua 中已经用过好多次了:

-- lua code
for _, k in table do
    --执行体
end


在 Go 中, 假设存在一个 函数 Test() 有三个返回值, 而我们只对它最后一个返回值感兴趣:

_, _, nickName := Test()


5. 常量

Go 中的常量可以说是无类型的, 通过 const 关键字可以指定一个常量.

const zero = 0.0
const Pi float64 = 3.14159265358979323846 // 指定类型也是可以的