Go语言基础 - 变量与常量

一、变量

程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差而且还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。

1. 声明

// 标准声明:var 变量名 变量类型
var name string

// 批量声明:
var (
    a string
    b int
)

2. 初始化

var name string = "Go"

// 类型推导:
var name = "Go"

// 一次初始化多个变量:
var name, age = "Go", 10

// 短变量声明:
shortName := "Go"

// 匿名变量:
_ = "Go" // 匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。

3. 值类型与引用类型

  • intfloatboolstring以及数组结构体都属于值类型
  • 指针slicesmapschannel属于引用类型

二、常量

常量使用方式与变量极为相似,只是常量在定义的时候必须赋值。

1. 声明

const pi = 3.1415
const a, b = 0, 1

// 多个常量一起声明
const (
      a = "33"
      b = 44
      c // 如果省略了值则表示和上面一行的值相同
)

// 常量用作枚举
const (
      Unknown = 0
      Female  = 1
      Male    = 2
)

2. 常量计数器iota

iota是go语言的常量计数器,只能在常量的表达式中使用。

iotaconst关键字出现时将被重置为0。const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。

const (
      a = iota // 0
      b        // 1
      _        // 跳过
      c        // 3
      d = 100  // iota声明中间插值
      e = iota // 5
)

const n = iota // 0

// 定义数量级 (这里的<<表示左移操作,1<<10表示将1的二进制表示向左移10位,也就是由1变成了10000000000,也就是十进制的1024。同理2<<2表示将2的二进制表示向左移2位,也就是由10变成了1000,也就是十进制的8。)
const (
      _  = iota
      KB = 1 << (10 * iota)
      MB
      GB
      TB
      PB
      EB
      ZB
      YB
)

// 多个iota定义在一行
const (
      a, b = iota + 1, iota + 2 // 1, 2; iota此处并未新增一行常量,iota == 0
      c, d                      // 2, 3; iota + 1 = 2, iota + 2 = 3,iota == 1
      e, f                      // 3, 4 
)

参考文献

你可能感兴趣的:(golang)