go语言学习笔记 — 基础 — 基本语法 — 常量与变量 — 常量变量的声明:常量的初始化定义
Posted Locutus
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习笔记 — 基础 — 基本语法 — 常量与变量 — 常量变量的声明:常量的初始化定义相关的知识,希望对你有一定的参考价值。
常量是一个简单值的标识符,在程序运行时,不会被修改。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
常量的初始化定义特点
- 常量的值在编译时就已确定,可以用于数组声明
const size = 4
var arr [size]int
- 常量定义格式与变量基本相同
- 常量定义的等号右边,必须是常量或常量表达式
- 常量表达式中的函数必须是go内置函数
常量的初始化定义
- 单个常量的定义(常用)
const identifier [type] = value
你可以省略类型说明符[type],因为编译器可以根据变量的值来推断其类型。
// 显式类型定义
const b string = "abc"
// 隐式类型定义
const b = "abc"
- 多个常量的定义(常用)
const (
pi = 3.14115
e = 2.718281
)
const (
text = "123"
length = len(text)
num = b * 20
)
- 多个常量的并行定义
// 多个常量的类型要相同
const c_name1, c_name2 = value1, value2
常量枚举(一组常量值)
- 对于从0开始赋值的常量初始化,go现在没有枚举,可以使用iota模拟枚举
const (
Unknown = 0
Female = 1
Male = 2
)
const (
Unknown = iota //0
Female //1
Male //2
)
- 一个const声明的内部,每一行常量将会自动套用前面常量的数据类型,并自动增加值。这种模式有点类似于电子表格中的单元格自动填充
- iota的起始值为0,一般情况下枚举常量值从0开始。设计每个枚举类型都有一个空值,方便业务和逻辑的灵活使用
- iota不仅只生成每次增加1的枚举值。我们还可以使用左移操作符,来做一些强大的枚举常量值生成器
const (
Readable = 1 << iota // 0001,1 << iot,每次左移一个二进制位
Writeable // 0010
Executable // 0100
)
package main
import "fmt"
const (
i = 1 << iota // i=1<<0,<<表示左移
j = 3 << iota
k
l
)
func main() {
fmt.Println("i=",i)
fmt.Println("j=",j)
fmt.Println("k=",k)
fmt.Println("l=",l)
}
- iota,特殊常量,可看作是一个能被编译器修改的常量。iota在const关键字出现时(const内部的第一行之前),将被重置为0。iota可理解为const()语句块中的行索引,const()中每新增一行声明,将使iota计数加1。
// 第一个iota等于0,每当iota在新的一行被使用时,它的值都会自动加1
const (
a = iota //0
b = iota //1
c = iota //2
)
所以a=0, b=1, c=2可以简写为如下形式
const (
a = iota //0
b //1
c //2
)
iota例子
package main
import "fmt"
func main() {
const (
a = iota //0
b //1
c //2
d = "ha" //独立值,iota += 1
e //"ha",iota += 1
f = 100 //独立值,iota +=1
g //100,iota +=1
h = iota //7,恢复计数
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i)
}
常量声明和枚举的例子
package main
import (
"fmt"
)
// 定义单个常量
const a = 1
const b = 'A'
// 定义多个常量
const (
text = "123"
length = len(text)
num = b * 20
)
// 并行定义多个常量
const i, j, k = 1, "2", '3'
const (
text2, length2, num2 = "1234", len(j), k*10
)
func main() {
fmt.Println(a, b, text, length, num)
fmt.Println(i, j, k, text2, length2, num2)
}
以上是关于go语言学习笔记 — 基础 — 基本语法 — 常量与变量 — 常量变量的声明:常量的初始化定义的主要内容,如果未能解决你的问题,请参考以下文章
go语言学习笔记 — 基础 — 基本语法 — 常量与变量 — 常量变量的声明:单个变量的声明与赋值
go语言学习笔记 — 基础 — 基本语法 — 常量与变量 — 变量的数值类型转换
go语言学习笔记 — 基础 — 基本语法 — 常量与变量 — 常量变量的声明:变量初始化声明和变量赋值
go语言学习笔记 — 基础 — 基本语法 — 常量与变量 — 常量变量的声明:多个变量的初始化声明与赋值