0

iota với khai báo hằng số trong Go

Từ khoá iota trong Go được dùng để đơn giản hoá việc khai báo hằng số tăng dần. iota có thể được sử dụng trong các biểu thức. Giá trị của iota được reset về 0 khi từ khoá const xuất hiện (tức là iota = 0 khi có một khối khai báo hằng số const) và được tăng dần sau mỗi dòng khai báo hàm số. Một vài ví dụ:

  1. Const với iota
const (
	Khong = iota
	Mot   = iota
	Hai   = iota
)

func main() {
	fmt.Println("Khong:", Khong)
	fmt.Println("Mot:", Mot)
	fmt.Println("Hai:", Hai)
}

Kết quả:

Khong: 0
Mot: 1
Hai: 2
  1. Const với iota (tt)
const (
	Khong = iota
	Mot
	Hai
)

func main() {
	fmt.Println("Khong:", Khong)
	fmt.Println("Mot:", Mot)
	fmt.Println("Hai:", Hai)
}

Kết quả:

Khong: 0
Mot: 1
Hai: 2

Hai ví dụ trên có cùng output -> không cần lặp lại "iota" sau mỗi lần khai báo hàm số.

  1. iota với một số cách dùng đặc biệt trong khai báo hàm số
const (
	Khong = iota
	_

	//comment
	Hai
	Ba
)

func main() {
	fmt.Println("Khong:", Khong)
	fmt.Println("Hai:", Hai)
	fmt.Println("Ba:", Ba)
}

Kết quả:

Khong: 0
Hai: 2
Ba: 3

với _, iota sẽ vẫn tăng lên 0 + 1 = 1

với empty line, iota skip = 1

với comment, iota skip = 1

  1. iota với biểu thức
const (
    _  = iota             // Ignore first value by assigning to blank identifier
    KB = 1 << (10 * iota) // KB = 1 << 10 (1024)
    MB                    // MB = 1 << 20 (1048576)
    GB                    // GB = 1 << 30 (1073741824)
    TB                    // TB = 1 << 40 (1099511627776)
)

func main() {
    fmt.Println("KB:", KB) // 1024
    fmt.Println("MB:", MB) // 1048576
    fmt.Println("GB:", GB) // 1073741824
    fmt.Println("TB:", TB) // 1099511627776
}
KB: 1024
MB: 1048576
GB: 1073741824
TB: 1099511627776
  1. Nhiều khai báo const với iota
const (
	A = iota
	B
)

const (
	C = iota
	D
)

func main() {
	fmt.Println("A:", A)
	fmt.Println("B:", B)
	fmt.Println("C:", C)
	fmt.Println("D:", D)
}
A: 0
B: 1
C: 0
D: 1

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí