1. 常量
- 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
- 定义格式: const identifier [type] = value, [type]可以省略,编译器会根据变量的值推断其类型
- 定义类型
- 显式类型定义: const a string = "bac"
- 隐式类型定义:const b = "abc"
- 常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过
- a = "hello" unsafe.Sizeof(a): 字符串类型在 go 里是个结构, 包含指向底层数组的指针和长度,这两部分每部分都是 8 个字节,所以字符串类型大小为 16 个字节。
2. 变量
- 变量初始化时忽略变量的类型,系统会自动推断,所以我们可以去掉var关键字,简化为a:=69,但是需要注意的是,这种声明方式只能用在函数体内,不可以用于全局变量的声明和赋值;
- a := 30,不能用于对已经存在的变量进行赋值
- 局部变量一旦声明必须使用,否则会报编译错误
- 变量定义前使用,也会报编译错误
- a, b, c := 5, 7, "abc" : 并行或者同时赋值,也可以用于当一个函数返回多个返回值时:val ,err = Func1(parameter)
- 交换两个变量的值:a, b = b, a 两个变量必须是相同的类型
- 空白标识符"_"用于抛弃值,例如:在_,b = 5,7中5被抛弃;实际上"_"是一个只写变量,不能获取其值;这么做的是因为go语言中你必须使用所有被声明的变量,但是有时你并不需要使用从一个函数得到的返回值,例如:ret1,_ = Func2(parameter),第二个返回值我们用不到就不用对其进行声明并赋值了