GO语言基础知识

Go语言中的变量和常量

作为绑定某个存储单元的标识符分为两类

  • 变量:指向的内存可以被修改
  • 常量:指向的内存不能被修改

1.变量!

使用一个名称来绑定一块内存地址,该内存地址中存放的数据类型由定义变量时指定的类型决定,该内存地址里面存放的内容可以改变。

1.1. 变量显示声明
var varName dataType [= value]
var 关键字用于变量声明
varName 是变量名标识符
dataType 表示基本数据类型
value 表示变量的初始值,可以是字面量也可以是其他变量名,还可以是个表达式,如果不指定初始值,则Go会默认将该变量初始化为类型的零值

Go声明变量以后会立即为其分配内存空间

var a int = 1
var a int = 2*3
var a int =b
1.2. 变量短类型声明
varName := value
:= 声明只能出现在函数中包括在方法内
此时Go编译器自动推断数据类型

Go也支持多个类型变量同时声明赋值

a,b := 1,'hello'
短类型声明,编译器自动推断变量的数据类型
1.3. 变量总结
  • 变量名
  • 变量值
  • 变量存储和生存期(go语言自动内存管理-栈逃逸技术自动分配内存空间,可能在栈上也可能在堆身上)
  • 类型信息
  • 可见性和作用域

2. 常量

常量使用一个名称来绑定一块内存地址,该内存地址中存放的数据类型由定义常量时指定的类型决定,而且该内存地址里面存放的内容不可以改变。分为布尔型、字符串型和数值型。常量存储在程序的只读段里(.rodata section)

预声明标识符iota 用在常量声明中,其初始值为0.一组多个常量同时声明时其值逐行增加,iota可以看作自增的枚举变量,专门用来初始化常量。

//类型枚举的iota

const (

c0 = iota // c0 = 0
c1 = iota // c1 = 1
c2 = iota // c2 = 2

)

// 简写模式

const (

c0 = iota
c1
c2

)

// 需要注意iota逐行增加

const (

a = 1 << iota
b = 1 << iota
c = 3 << iota
d = 1 << itoa

)

const (

u = iota * 42
v float64 = iota *42
2 = iota * 42

)

// 分开的const,iota每次都从0开始
const x = iota

const y = iota