2 变量和常量

[TOC]

变量和常量

  • 使用一个标识符绑定一个内存地址,该内存地址中存放的数据类型由定义变量时指定的类型决定,该内存地址里面存放的数据可以改变。

变量

基本数据类型 显式完整声明

// 只声明
var varName dataType
// 声明并赋值
var varName dataType = value
  • var 用于变量声明。

  • varName 变量名标识符。

  • dataType 数据类型。

  • value 变量的初始值,可以是字面量或其它变量或表达式,如只声明会赋予类型的默认零值。

  • 基础类型变量声明后会立即分配对应的内存空间。

基本数据类型 短类型定义变量

  • 短类型定义变量由于是Go编译器自动进行数据类型推断,所以只能用在方法或函数中。

变量的属性

  • 变量名,要符合自定义标识符规则,并且尽可能使用驼峰原则。

  • 变量值,指向地址里存放的值,它的解析方式由类型决定,初始化时可以使用字面量或其它变量。

  • 变量存储和生存期,Go是自动内存管理,编译器使用栈逃逸技术能够自动为变量分配空间:栈或者堆上。

  • 类型,值的解析和支持的操作、运算由类型决定,不同类型的变量支持的操作和运算是不同的。

  • 作用域,全局作用域(全局变量)、包内作用域(包内变量)、局部作用域(局部变量)。

变量覆盖

编译器解析变量名采用从里到外的搜索模式,里层局部变量能够覆盖外层同名变量。

  • 局部变量之间覆盖

  • 包内变量和全局变量之间覆盖

常量

  • 使用一个标识符绑定一个内存地址,该内存地址中存放的数据类型由定义常量时指定的类型决定,该内存地址里面存放的数据是只读、不可改变的。

iota

  • iota实现常量自增。

Last updated