Go 語言常量定義與(右移)和ioto的使用
阿新 • • 發佈:2019-01-31
我們都知道 << 表示為左移,>> 為右移,比如 << 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、<< 為左移,>> 為右移,跟在後面的數值為移動的位數