| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // iota_cheatsheet.go
- package main
- import "fmt"
- /*
- -------------------------------------------------
- 1) 顺序枚举(最常用)
- Sunday=0, Monday=1, ..., Saturday=6
- -------------------------------------------------
- */
- const (
- Sunday = iota // 0
- Monday // 1
- Tuesday
- Wednesday
- Thursday
- Friday
- Saturday
- )
- /*
- -------------------------------------------------
- 2) 位掩码(flags)
- 每个常量占 1 个二进制位,可用于权限/选项
- -------------------------------------------------
- */
- const (
- Read = 1 << iota // 0b0001
- Write // 0b0010
- Exec // 0b0100
- )
- /*
- -------------------------------------------------
- 3) 自定义步长或公式
- 生成 1KB, 1MB, 1GB ... 的精确字节数
- -------------------------------------------------
- */
- const (
- _ = iota // 0 丢掉
- KB = 1 << (10 * iota) // 1 << 10 = 1024
- MB // 1 << 20 = 1048576
- GB // 1 << 30 = 1073741824
- )
- /*
- -------------------------------------------------
- 4) 跳号 + 中途改公式
- 演示跳过某个值、后续再换算法
- -------------------------------------------------
- */
- const (
- A = iota // 0
- B // 1
- _ // 2 被跳过
- C // 3
- D = iota + 10 // 4+10 = 14
- E // 5+10 = 15
- )
- func main() {
- fmt.Println("Weekday:", Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)
- fmt.Println("Flags :", Read, Write, Exec)
- fmt.Println("Storage:", KB, MB, GB)
- fmt.Println("Misc :", A, B, C, D, E)
- }
|