最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1. iota關(guān)鍵字

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

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

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

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就類(lèi)似于在一個(gè)const的()中的一個(gè)行計(jì)數(shù),當(dāng)我們調(diào)用它時(shí),不論我們使用與否,使用多少次,itap都會(huì)會(huì)對(duì)每一行進(jìn)行一個(gè)計(jì)數(shù)。

2. 枚舉類(lèi)型

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

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

type Season int

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

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

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

相關(guān)文章

  • 基于go微服務(wù)效率工具goctl深度解析

    基于go微服務(wù)效率工具goctl深度解析

    這篇文章主要為大家介紹了基于go微服務(wù)效率工具goctl深度解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 從基礎(chǔ)到高級(jí)全方位解析Go中反射的應(yīng)用

    從基礎(chǔ)到高級(jí)全方位解析Go中反射的應(yīng)用

    本文我們將全面深入地探討Go語(yǔ)言的反射機(jī)制,從反射的基礎(chǔ)概念、為什么需要反射,到如何在Go中實(shí)現(xiàn)反射,以及在高級(jí)編程場(chǎng)景如泛型編程和插件架構(gòu)中的應(yīng)用,需要的可以參考下
    2023-10-10
  • go:垃圾回收GC觸發(fā)條件詳解

    go:垃圾回收GC觸發(fā)條件詳解

    這篇文章主要介紹了go:垃圾回收GC觸發(fā)條件詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • Go實(shí)現(xiàn)基于RSA加密算法的接口鑒權(quán)

    Go實(shí)現(xiàn)基于RSA加密算法的接口鑒權(quán)

    這篇文章主要介紹了Go實(shí)現(xiàn)基于RSA加密算法的接口鑒權(quán),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • golang中l(wèi)og包自定義輸出日志格式與寫(xiě)入到文件

    golang中l(wèi)og包自定義輸出日志格式與寫(xiě)入到文件

    這篇文章主要給大家介紹了關(guān)于golang中l(wèi)og包自定義輸出日志格式與寫(xiě)入到文件的相關(guān)資料,日志輸出在任何項(xiàng)目中都極其重要,是有助于后續(xù)我們排查解決程序BUG,需要的朋友可以參考下
    2023-06-06
  • Go設(shè)置http請(qǐng)求超時(shí)的方法實(shí)現(xiàn)

    Go設(shè)置http請(qǐng)求超時(shí)的方法實(shí)現(xiàn)

    這篇文章主要介紹了Go設(shè)置http請(qǐng)求超時(shí)的方法實(shí)現(xiàn),最近接手了一個(gè)老項(xiàng)目進(jìn)行維護(hù),發(fā)現(xiàn)其中有個(gè)關(guān)于 http 請(qǐng)求的方法設(shè)置的 timeout 沒(méi)有生效,很奇怪,一開(kāi)始查看代碼并沒(méi)有發(fā)現(xiàn)什么可疑點(diǎn),后查看了源碼,打斷點(diǎn)調(diào)試才發(fā)現(xiàn)問(wèn)題所在,這里簡(jiǎn)單記錄復(fù)盤(pán)一下
    2024-08-08
  • Go?一般方法與接口方法接收者的差異詳解

    Go?一般方法與接口方法接收者的差異詳解

    這篇文章主要為大家介紹了Go?一般方法與接口方法接收者的差異詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Golang中tinyrpc框架的源碼解讀詳解

    Golang中tinyrpc框架的源碼解讀詳解

    tinyrpc是一個(gè)高性能的基于protocol?buffer的rpc框架。項(xiàng)目代碼非常少,很適合初學(xué)者進(jìn)行g(shù)olang的學(xué)習(xí)。本文將從源碼的角度帶大家了解tinyrpc框架的使用,需要的可以參考一下
    2023-01-01
  • Golang應(yīng)用執(zhí)行Shell命令實(shí)戰(zhàn)

    Golang應(yīng)用執(zhí)行Shell命令實(shí)戰(zhàn)

    本文主要介紹了Golang應(yīng)用執(zhí)行Shell命令實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • golang post請(qǐng)求常用的幾種方式小結(jié)

    golang post請(qǐng)求常用的幾種方式小結(jié)

    這篇文章主要介紹了golang post請(qǐng)求常用的幾種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04

最新評(píng)論

虞城县| 卢湾区| 商水县| 中卫市| 平顺县| 花垣县| 广饶县| 合阳县| 呼和浩特市| 通海县| 永顺县| 肥西县| 株洲县| 平果县| 金山区| 平果县| 东乌| 平江县| 满洲里市| 陈巴尔虎旗| 贵南县| 怀化市| 家居| 冀州市| 中超| 丁青县| 运城市| 亳州市| 许昌县| 广东省| 汾阳市| 万宁市| 中西区| 城步| 施秉县| 荥经县| 五华县| 东辽县| 民勤县| 麻栗坡县| 新乡县|