1. 程式人生 > >Go 語言常量定義與(右移)和ioto的使用

Go 語言常量定義與(右移)和ioto的使用

我們都知道 << 表示為左移,>> 為右移,比如 << 1 為左移一位, >> 1 為 右移1位,現在看看Go語言常量定義const中用<<、>> 中的使用,先看示例:

// Demo01 project main.go
package main

import "fmt"

const (
	a = 1         // iota = 0
	b = 1 << iota // iota = 1
	c
	d
	e = 2
	f
	g             // iota = 6
)

func main() {
	fmt.Println(a, b, c, d, e, f, g)
}

結果為: 1 2 4 8 2 2 2
 

// Demo01 project main.go
package main

import "fmt"

const (
	a = 1
	b = 1 << iota
	c
	d
	e = 200 >> iota
	f
	g
)

func main() {
	fmt.Println(a, b, c, d, e, f, g)
}

輸出結果為:1 2 4 8 12 6 3
 

到這裡應該可以看出個所以然了,首先我們只 iota 為在遇到下一個 const之前為從0開始每次加1,其次為在const因式分解式定義中,未定義的值為前一個最近賦值的值,比如 c的值為 1 << iota,由於到c是 iota的值已經為2,所以 1<< 2為4(二進位制:1<<2 = 100,換為十進位制 2^3=8)。

總結一下:

1、在const因式分解式定義中,未定義的值為前一個最近賦值的值。

2、在定義const的常量時,iota的值為0,在之後沒有遇到const的關鍵字時,每一個新行自增1

3、<< 為左移,>> 為右移,跟在後面的數值為移動的位數