Go語言_iota用法


一、介紹

iota,特殊常量,可以認為是一個可以被編譯器修改的常量。

在每一個const關鍵字出現時,被重置為0,然后再下一個const出現之前,每出現一次iota,其所代表的數字會自動增加1。

iota 可以被用作枚舉值:

package main
import "fmt"
func main() {
    const (
        a = iota   //0
        b = iota   //1
        c = iota   //2
    )
    fmt.Println(a,b,c)
}

第一個 iota 等於 0,每當 iota 在新的一行被使用時,它的值都會自動加 1;所以 a=0, b=1, c=2 可以簡寫為如下形式:

    const (
        a = iota   
        b        
        c 
    )

 

二、用法

1,作為累加器

package main

import "fmt"

func main() {
    const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //獨立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢復計數
            i          //8
    )
    fmt.Println(a,b,c,d,e,f,g,h,i)
}

 

2,移位運算

package main
import "fmt"
const (
    i=1<<iota  //1<<0  二進制 0000 0001
    j=3<<iota  //3<<1  二進制 0000 0110
    k       //3<<2  二進制 0000 1100
    l       //3<<3  二進制 0001 1000
)

func main() {
    fmt.Println("i=",i)
    fmt.Println("j=",j)
    fmt.Println("k=",k)
    fmt.Println("l=",l)
}

簡單表述:

  • i=1:左移0位不變,所以仍為1;
  • j=3:左移一位從0000 0011變為0000 0110,所以為6;
  • k=3:左移兩位從0000 0011變為0000 1100,所以為12;
  • l=3:左移三位從0000 0011變為0001 1000,所以為24。

 

三、參考資料

iota: Golang 中優雅的常量

iota:Elegant Constants in Golang

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM