75 lines
1.5 KiB
Markdown
75 lines
1.5 KiB
Markdown
|
|
# 02-constants - 常量与iota
|
|||
|
|
|
|||
|
|
## 知识点讲解
|
|||
|
|
|
|||
|
|
### 常量定义
|
|||
|
|
|
|||
|
|
常量使用`const`关键字定义,值在编译时确定且不可修改。
|
|||
|
|
|
|||
|
|
**基本语法**:
|
|||
|
|
```go
|
|||
|
|
const PI = 3.14159
|
|||
|
|
const MAX_SIZE = 100
|
|||
|
|
const greeting = "Hello"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**批量声明**:
|
|||
|
|
```go
|
|||
|
|
const (
|
|||
|
|
STATUS_OK = 200
|
|||
|
|
STATUS_NOT_FOUND = 404
|
|||
|
|
STATUS_ERROR = 500
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### iota常量生成器
|
|||
|
|
|
|||
|
|
`iota`是Go语言的特殊常量,在const声明块中,每增加一行`iota`的值自增1(从0开始)。
|
|||
|
|
|
|||
|
|
**基本用法**:
|
|||
|
|
```go
|
|||
|
|
const (
|
|||
|
|
A = iota // 0
|
|||
|
|
B = iota // 1
|
|||
|
|
C = iota // 2
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**简化写法**(首个表达式后后续行省略):
|
|||
|
|
```go
|
|||
|
|
const (
|
|||
|
|
A = iota // 0
|
|||
|
|
B // 1
|
|||
|
|
C // 2
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**表达式模式**:
|
|||
|
|
```go
|
|||
|
|
const (
|
|||
|
|
KB = 1 << (10 * iota) // 1 << 0 = 1
|
|||
|
|
MB // 1 << 10 = 1024
|
|||
|
|
GB // 1 << 20 = 1048576
|
|||
|
|
TB // 1 << 30 = 1073741824
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 重要提示
|
|||
|
|
|
|||
|
|
- 常量只能是基本类型:数字、字符串、布尔值
|
|||
|
|
- 常量必须初始化,无法被赋值
|
|||
|
|
- `iota`只可用于const块内
|
|||
|
|
- const块内,每个单独的const声明会重置iota为0
|
|||
|
|
|
|||
|
|
## 学习目标
|
|||
|
|
|
|||
|
|
完成本练习后,你将:
|
|||
|
|
- ✅ 掌握常量的定义方式
|
|||
|
|
- ✅ 理解iota的工作原理
|
|||
|
|
- ✅ 能够使用iota创建枚举值
|
|||
|
|
- ✅ 掌握iota的高级用法(表达式模式)
|
|||
|
|
|
|||
|
|
## 练习说明
|
|||
|
|
|
|||
|
|
打开 `main.go`,根据注释提示填充代码,完成后运行 `go test -v` 验证答案。
|