Golang 学习笔记 003 标识符、变量和常量
标识符
标识符是一类具有特殊意义的词,常见的有变量、常量、函数名等。
标识符的命名规范
- 标识符有字母、数字、下划线组成
- 不能以数字开头
- 严格区分大小写
- 单个下划线(_)是一个特殊的标识符,被称为空标识符,可以表示任何标识符,但对应的值会被忽略,比如忽略某个函数的返回值,所以只能被作为占位符使用。
- 不能使用系统关键字和保留字作为标识符
- 推荐使用驼峰命名法
关键字
Go 中有 25 个关键字,如下:
break | default | func | interface | select |
---|---|---|---|---|
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
另外还有 30 多个预定义标识符
-
内建常量: true false iota nil
-
内建类型: int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error -
内建函数: make len cap new append copy close delete
complex real imag
panic recover
变量
程序运行过程中使用的数据都是保存在内存中的,程序要找到对应的数据需要通过数据在内存中的地址才可以找到,内存地址类似与0x00000000,如果我们编写程序的时候直接使用这些内存地址,会让我们编写程序变的困难,还会导致程序代码的可读性差,不好维护,这个时候,我们就可以使用变量将这些内存地址保存起来,以后直接使用变量就可以操作数据。变量只是方便给我们人类看的,程序内部运行时,还是直接使用内存地址。
变量的类型
变量是用来存储数据的,不同的变量存储的数据的类型也是不一样的,常见的数据类型有,数值型、字符型、布尔型等。
变量的声明与初始化
在 Go 中变量的声明格式为:
// 声明格式
// var 变量名 变量类型
// 示例: 一次声明一个变量
var name string
var age int
var weight float
// 示例: 一个声明多个变量
var (
name string
age int
weight float
)
// 初始化
// var 变量名1 变量类型 = 表达式
// var 变量名2 变量类型
// 变量名2 = 表达式
// 先声明再初始化
var name string
name = "resn"
// 示例: 一次声明一个变量并初始化
var name string = "resn"
// 示例: 一次声明并初始化多个变量
var name,age = "resn", 12
// 使用类型推导: 可在声明变量时,不指定类型,此时编译器会根据等号右边的值来推导出变量的类型
var name = "resn"
var age = 12
// 使用短变量声明: 在函数中,简洁赋值语句 := 可在类型明确的地方代替 var 声明。函数外的每个语句都必须以关键字开始(var, func 等等),因此 := 结构不能在函数外使用。
name := "resn"
age := 12
匿名变量
匿名变量就是前面提到的单下划线,在进行多重赋值的时候,如果我们想忽略某个值,就可以使用匿名变量,一般是一个函数有多个返回值,想忽略其中某些值时使用。
解释器不会给匿名变量分配内存,也不占用命名空间,所以不存在重复声明的问题,
// 示例: 最简单直观的示例
func main() {
name,_,_ := "resn1", 12, 180
fmt.Println("Hello ", name)
}
// 示例: 使用函数时
func anonymousVar() (string,int,int) {
return "resn", 12,180
}
func main() {
name,_,_ := anonymousVar()
fmt.Println("Hello ", name)
}
常量
常量就是不变的值,在程序运行的过程中,有些值不会发生改变,这些值就可以定义为常量,和定义变量不同的是,定义常量使用的关键字 const
, 在定义常量时,必须为其赋值。使用 const 定义的常量无法二次赋值,否则会报错
const PI = 3.14 // 圆周率 π
const e = 2.71828 // 自然常数 e
对比变量和常量,变量就像是我们的年龄,每年一变,而常量就相当于我们的身份证号,一个人一辈子基本就只有一个身份证号。
常量计数器 iota
iota 是 go 中的常量计数器,仅用于常量表达式
在 const 关键字出现时 iota 将置为 0。在 const 中每新增一行,iota 的计数增加一次。使用 iota 可以使定义简化,在定义枚举时很方便。
// 示例 1:一般情况
const (
a = iota // 0
b // 1
c // 2
d // 3
)
// 示例 2:插队情况 1
const (
a = iota // 0
b // 1
_ // 跳过
c // 3
)
// 示例 3:插队情况 2
const (
a = iota // 0
z = "resn" // resn
b = iota // 2 这里如果不重新赋值为 iota,后面的值会和变量 z 相同
c // 3
)
// 示例 4:多个 iota 在一行时
const (
a,b = iota,iota*2 // 0,0
c,d // 1,2
e,f // 2,4
)