欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go?iota關(guān)鍵字與枚舉類型實(shí)現(xiàn)原理

 更新時(shí)間:2022年07月31日 08:47:32   作者:樹獺叔叔???????  
這篇文章主要介紹了Go?iota關(guān)鍵字與枚舉類型實(shí)現(xiàn)原理,iota是go語言的常量計(jì)數(shù)器,只能在常量的表達(dá)式中使用,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下

1. iota關(guān)鍵字

iota是go語言的常量計(jì)數(shù)器,只能在常量的表達(dá)式中使用,其值從0開始,在const中每新增一行iota自己增長(zhǎng)1,其值一直自增1直到遇到下一個(gè)const關(guān)鍵字,其值才被重新置為0。

const (
    a int = iota // 0
    b            // 1
    c            // 2
    d            // 3
)

另外,iota在使用時(shí),可以跳過某幾行(需要注意的是,空格并不算行)。

const ( 
    a = iota // 0 
    b        // 1 
    c        // 2 
    _ 
    _ 
    d        // 5 
)

并且,iota可以參與數(shù)學(xué)運(yùn)算。

type Allergen int
const (
    IgEggs Allergen = 1 << iota // 1 << 0 which is 00000001 = 1
    IgChocolate                 // 1 << 1 which is 00000010 = 2
    IgNuts                      // 1 << 2 which is 00000100 = 4
    IgStrawberries              // 1 << 3 which is 00001000 = 8
    IgShellfish                 // 1 << 4 which is 00010000 = 16
)

并且,在同一行中,一個(gè)iota可以多次使用:

const (
    a, q int = iota, iota + 1 // 0, 1
    b, w                      // 1, 2
    c, e                      // 2, 3
    d, r                      // 3, 4
)

綜上所示,我們可以發(fā)現(xiàn),iota就類似于在一個(gè)const的()中的一個(gè)行計(jì)數(shù),當(dāng)我們調(diào)用它時(shí),不論我們使用與否,使用多少次,itap都會(huì)會(huì)對(duì)每一行進(jìn)行一個(gè)計(jì)數(shù)。

2. 枚舉類型

枚舉用來表示只包含有限數(shù)量的固定值的類型,在開發(fā)中一般用于標(biāo)識(shí)錯(cuò)誤碼或者狀態(tài)機(jī)。拿一個(gè)實(shí)體對(duì)象的狀態(tài)機(jī)來說,它通常與這個(gè)對(duì)象在數(shù)據(jù)庫里對(duì)應(yīng)記錄的標(biāo)識(shí)狀態(tài)的字段值相對(duì)應(yīng)。

Java 為我們提供了現(xiàn)成的枚舉類的實(shí)現(xiàn)形式。但是在Go中并沒有,因此我們可以借助type定義一個(gè)類型與iota結(jié)合實(shí)現(xiàn)枚舉類的效果:

type Season int

const (
	Summer Season = 1
	Autumn        = 2
	Winter        = 3
	Spring        = 4
)

雖然底層的實(shí)現(xiàn)仍然是int類型,但是當(dāng)我們使用int類型直接與Season類型的變量比較時(shí),會(huì)出現(xiàn)編譯不通過的錯(cuò)我,這樣我們就可以對(duì)我們需要的枚舉類型做類型限制了。

當(dāng)然,我們也可以結(jié)合上面提到的itao,進(jìn)行打優(yōu)化:

type Season int

const (
	Summer Season = iota + 1
	Autumn        
	Winter        
	Spring        
)

到此這篇關(guān)于Go iota關(guān)鍵字與枚舉類型實(shí)現(xiàn)原理的文章就介紹到這了,更多相關(guān)Go iota關(guān)鍵字 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • go語言題解LeetCode989數(shù)組形式的整數(shù)加法

    go語言題解LeetCode989數(shù)組形式的整數(shù)加法

    這篇文章主要為大家介紹了go語言題解LeetCode989數(shù)組形式的整數(shù)加法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 在Go語言程序中使用gojson來解析JSON格式文件

    在Go語言程序中使用gojson來解析JSON格式文件

    這篇文章主要介紹了在Go語言程序中使用gojson來解析JSON格式文件的方法,Go是由Google開發(fā)的高人氣新興編程語言,需要的朋友可以參考下
    2015-10-10
  • GIN的路由以及傳參問題

    GIN的路由以及傳參問題

    本文主要介紹了GIN的路由以及傳參問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Golang獲取目錄下的文件及目錄信息操作

    Golang獲取目錄下的文件及目錄信息操作

    這篇文章主要介紹了Golang獲取目錄下的文件及目錄信息操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang中如何實(shí)現(xiàn)枚舉詳析

    Golang中如何實(shí)現(xiàn)枚舉詳析

    舉就是將數(shù)據(jù)值一一列出來,枚舉可以用來表示一些固定的值,枚舉是常量組成的,下面這篇文章主要給大家介紹了關(guān)于Golang中如何實(shí)現(xiàn)枚舉的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • VSCode1.4 搭建Golang的開發(fā)調(diào)試環(huán)境(遇到很多問題)

    VSCode1.4 搭建Golang的開發(fā)調(diào)試環(huán)境(遇到很多問題)

    這篇文章主要介紹了VSCode1.4 搭建Golang的開發(fā)調(diào)試環(huán)境(遇到很多問題),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 如何避免Go語言常見錯(cuò)誤之意外的變量隱藏

    如何避免Go語言常見錯(cuò)誤之意外的變量隱藏

    在Go語言中,變量隱藏(Variable Shadowing)是一個(gè)常見的錯(cuò)誤來源,變量隱藏發(fā)生在一個(gè)內(nèi)部作用域中聲明的變量與外部作用域的變量同名時(shí),這可能導(dǎo)致開發(fā)者無意中使用了錯(cuò)誤的變量,造成難以追蹤的bug,本文講解一些關(guān)于變量隱藏的常見錯(cuò)誤和如何避免它們的方法
    2024-01-01
  • Go語言擴(kuò)展原語之ErrGroup的用法詳解

    Go語言擴(kuò)展原語之ErrGroup的用法詳解

    除標(biāo)準(zhǔn)庫中提供的同步原語外,Go語言還在子倉(cāng)庫sync中提供了4種擴(kuò)展原語,本文主要為大家介紹的是其中的golang/sync/errgroup.Group,感興趣的小伙伴可以了解一下
    2023-07-07
  • Go gorilla/sessions庫安裝使用

    Go gorilla/sessions庫安裝使用

    這篇文章主要為大家介紹了Go gorilla/sessions庫安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • golang基礎(chǔ)之waitgroup用法以及使用要點(diǎn)

    golang基礎(chǔ)之waitgroup用法以及使用要點(diǎn)

    WaitGroup是Golang并發(fā)的兩種方式之一,一個(gè)是Channel,另一個(gè)是WaitGroup,下面這篇文章主要給大家介紹了關(guān)于golang基礎(chǔ)之waitgroup用法以及使用要點(diǎn)的相關(guān)資料,需要的朋友可以參考下
    2023-01-01

最新評(píng)論