Golang 学习笔记 003 标识符、变量和常量

标识符

标识符是一类具有特殊意义的词,常见的有变量、常量、函数名等。

标识符的命名规范

  • 标识符有字母、数字、下划线组成
  • 不能以数字开头
  • 严格区分大小写
  • 单个下划线(_)是一个特殊的标识符,被称为空标识符,可以表示任何标识符,但对应的值会被忽略,比如忽略某个函数的返回值,所以只能被作为占位符使用。
  • 不能使用系统关键字和保留字作为标识符
  • 推荐使用驼峰命名法

关键字

Go 中有 25 个关键字,如下:

breakdefaultfuncinterfaceselect
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
)





posted on 2020-01-03 14:45  R_e  阅读(269)  评论(0编辑  收藏  举报

导航