Go-变量和常量

Go-变量和常量
白开水船长变量
变量定义的标准格式为:变量声明以关键字 var 开头,后置变量类型,行尾不加分号。
1 | //var 变量名 变量类型 |
当一个变量被声明之后,如果没有显式的给它赋值,系统自动赋予它该类型的零值:
| 类型 | 默认值 |
|---|---|
| 整型 | 0 |
| 浮点型 | 0.0 |
| 字符串 | 空字符串 |
| 布尔型 | false |
| 切片、函数、指针变量 | nil |
变量初始化
短变量声明并初始化:(只能使用在函数内部)
1 | package main |
变量地址
1 | package main |
变量交换
1 | package main |
匿名变量
匿名变量的特点是一个下划线 “_” ,”_” 本身就是一个特殊的标识符,被称为空白标识符。它可以像其它标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算。使用匿名变量时,只需要在变量声明的地方使用下划线替换即可。例如:
1 | package main |
变量的作用域
局部变量
在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,函数的参数和返回值变量都属于局部变量。
全局变量
在函数体外声明的变量称之为局部变量,全局变量只需在一个源文件中定义,就可以在所有源文件中使用,当然,不包含这个全局变量的源文件需要使用 “import” 关键字引入全局变量所在的源文件之后才能使用这个全局变量。
全局变量声明必须以 var 关键字开头,如果想要在外部包中使用全局变量的首字母必须大写。
全局变量和局部变量名称可以相同,但是函数体内的局部变量会被优先考虑。(就近原则)
常量
常量是一个简单值的标识符,在程序运行时,不会被修改的量。
常量中的数据类型只可以是 布尔型、数字型(整数型、浮点型和复数)和字符串型。
1 | //显式类型定义 |
iota
iota,特殊常量,可以认为是一个可以被编译器修改的常量。
iota 在 const 关键字出现时将被重置为 0 (const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次 (iota 可理解为 const 语句块中的行索引)。
第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2 可以简写为如下形式:
1 | const ( |
iota 用法
1 | package main |
再看个有趣的的 iota 实例:
1 | package main |
