iota là bộ đếm compile-time: nó reset về 0 ở đầu mỗi block const và tăng 1 sau mỗi dòng ConstSpec. Kết hợp với một kiểu riêng, đây là cách Go dựng enum.
- Gán một kiểu (
Weekday int) để tạo enum có type an toàn thay vìinttrần. - Một dòng trống-biểu-thức lặp lại biểu thức phía trên (không cần viết lại
iota). - Bỏ qua giá trị đầu bằng
_; dịch bit để tạo cờ hoặc bội số.
go
type Weekday int
const (
Sunday Weekday = iota // 0
Monday // 1
Tuesday // 2
)
const (
_ = iota // bỏ 0
KB = 1 << (10 * iota) // 1<<10
MB // 1<<20
)