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
)
 
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号