婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Golang表示枚舉類型的詳細講解

Golang表示枚舉類型的詳細講解

熱門標簽:上海企業(yè)外呼系統(tǒng)排名 如何利用高德地圖標注家 開通400電話申請流程 智能語音電銷的機器人 百度地圖標注位置網(wǎng)站 400手機電話免費辦理 電腦外呼系統(tǒng)輻射大嗎 武漢百應人工智能電銷機器人 揚州電銷外呼系統(tǒng)軟件

枚舉,是一種重要的數(shù)據(jù)類型,由一組鍵值對組成,通常用來在編程語言中充當常量的標識符。在主流行編程語言如 c、 java 等,都有原生支持。在 go 中,大家卻找不到 enum 或者其它直接用來聲明枚舉類型的關(guān)鍵字。從熟悉其它編程語言的開發(fā)者轉(zhuǎn)用 go 編程,剛開始會比較難接受這種情況。其實,如果你看到如何在 go 中表示枚舉類型時,可能會感受到 go 語言設計者對簡潔性、問題考慮的深度,是一般資淺工程師無法比擬的。

其實,在 go 語言設計者的眼里,enum 本質(zhì)是常量,為什么要多余一個關(guān)鍵字呢?在 go 只是沒有 enum 關(guān)鍵字而已,其表現(xiàn)枚舉的形式,與其它語言別無太大區(qū)別。下面來看看如果在 go 中表示枚舉。

學習、使用一門語言,是學習、理解語言本身的設計哲學,同時也會感受到設計者的性格特點。

基礎(chǔ)工作 

為了下面講解方便,這里使用 go modules 的方式先建立一個簡單工程。

~/Projects/go/examples  
➜  mkdir enum  
~/Projects/go/examples  
➜  cd enum  
~/Projects/go/examples/enum  
➜  go mod init enum  
go: creating new go.mod: module enum  
~/Projects/go/examples/enum  
➜  touch enum.go 

const + iota

以 啟動、運行中、停止 這三個狀態(tài)為例,使用 const 關(guān)鍵來聲明一系列的常量值。在 enum.go 中寫上以下內(nèi)容:

package main  
import "fmt"  
const (  
    Running int = iota  
    Pending  
    Stopped  
)  
func main() {  
    fmt.Println("State running: ", Running)  
    fmt.Println("State pending: ", Pending)  
    fmt.Println("State Stoped: ", Stopped)  
} 

保存并運行,可以得到以下結(jié)果,

~/Projects/go/examples/enum   
➜  go run enum.go  
State running:  0  
State pending:  1  
State Stoped:  2 

在說明發(fā)生了什么之前,我們先看來一件東西,iota。相比于 c、java,go 中提供了一個常量計數(shù)器,iota,它使用在聲明常量時為常量連續(xù)賦值。

比如這個例子,

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

在一個 const 聲明塊中,iota 的初始值為 0,每聲明一個變量,自增 1。以上的代碼可以簡化成:

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

設想一下,如果此時有 50 或者 100 個常量數(shù),在 c 和 java 語言中寫出來會是什么情況。

關(guān)于 iota,有更多的具體的技巧(例如跳數(shù)),詳細請看官方定義 iota。

通過使用 const 來定義一連串的常量,并借助 iota 常量計數(shù)器,來快速的為數(shù)值類型的常量連續(xù)賦值,非常方便。雖然沒有了 enum 關(guān)鍵字,在這種情況下發(fā)現(xiàn),是多余的,枚舉本質(zhì)上就是常量的組合。

當然,你可以使用以下方式,來更接近其它語言的 enum,

// enum.go  
...  
type State int  
const (  
    Running State = iota  
    Pending  
    Stopped  
)  
... 

把一組常量值,使用一個類型別名包裹起來,是不是更像其它語言中的 enum {} 定義了呢?

你還可以將上面的例子改為:

// enum.go  
...  
type State int 
const (  
    Running State = iota  
    Pending  
    Stopped  
)  
func (s State) String() string {  
    switch s {  
    case Running:  
        return "Running"  
    case Pending:  
        return "Pending"  
    case Stopped:  
        return "Stopped"  
    default:  
        return "Unknown" 
     }  
}  
... 

為定義的枚舉類型加上 String 函數(shù),運行結(jié)果如下:

~/Projects/go/examples/enum   
➜  go run enum.go  
State running:  Running  
State pending:  Pending  
State Stoped:  Stopped 

是不是很魔幻,思路一下又開闊一些,長見識了。把實際的值與打印字符分開,一般語言設計者不會想到。看到這里,有沒有這種的感覺,go 語言的設計者并不是偷懶,而是為了可以偷懶想了很多、做了很多。

到此這篇關(guān)于Golang表示枚舉類型的詳細講解的文章就介紹到這了,更多相關(guān)Golang 枚舉類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Go 第三方庫之類型轉(zhuǎn)換問題
  • Pandas數(shù)據(jù)類型之category的用法
  • golang如何獲得一個變量的類型
  • Golang斷言判斷值類型的實現(xiàn)方法
  • MongoDB 常用的數(shù)據(jù)類型和基本操作

標簽:武漢 黑龍江 嘉峪關(guān) 宜賓 延邊 張掖 新余 江西

巨人網(wǎng)絡通訊聲明:本文標題《Golang表示枚舉類型的詳細講解》,本文關(guān)鍵詞  Golang,表示,枚舉,類型,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Golang表示枚舉類型的詳細講解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Golang表示枚舉類型的詳細講解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产成人av电影在线播放| www.欧美.com| 成人国产视频在线观看| 欧美日韩不卡视频| 亚洲视频香蕉人妖| 国产福利一区在线观看| 3atv一区二区三区| 亚洲与欧洲av电影| 91免费精品国自产拍在线不卡| 久久美女艺术照精彩视频福利播放 | 日韩精品影音先锋| 亚洲图片欧美色图| 91丨九色丨黑人外教| 久久综合99re88久久爱| 麻豆久久一区二区| 欧美一区二区三区小说| 天天综合网 天天综合色| 91亚洲资源网| 中文字幕在线观看不卡| 国产成人久久精品77777最新版本| 日韩视频免费观看高清完整版在线观看 | 国产成人午夜片在线观看高清观看| 欧美人牲a欧美精品| 一区二区三区欧美在线观看| 91视频一区二区三区| 亚洲精品伦理在线| 欧美伊人久久久久久久久影院| 亚洲精品老司机| 欧美视频你懂的| 天堂va蜜桃一区二区三区漫画版| 欧美精品日韩综合在线| 人人狠狠综合久久亚洲| 欧美精品在欧美一区二区少妇| 亚洲18色成人| 欧美一区永久视频免费观看| 欧美aaa在线| 精品美女被调教视频大全网站| 另类调教123区| 久久久美女毛片| 99这里只有久久精品视频| 中文字幕一区二区三区在线观看 | 日韩精品视频网| 欧美成人精品1314www| 国产精品一品视频| 中文字幕在线一区二区三区| 色综合中文字幕国产| 亚洲国产精品久久久久婷婷884| 欧美日韩一卡二卡三卡 | 久久99精品国产| 日本一区二区在线不卡| 91丨九色porny丨蝌蚪| 婷婷中文字幕综合| 久久久国产精品麻豆| eeuss鲁一区二区三区| 一区二区三区精品视频在线| 欧美一区二区三区免费在线看| 国产一区在线不卡| 中文字幕一区二区不卡| 精品视频色一区| 国产在线精品一区二区夜色| 亚洲欧洲国产专区| 日韩欧美亚洲国产另类| 国产精品18久久久久久vr| 亚洲综合色在线| 亚洲精品一区在线观看| 在线观看91精品国产入口| 激情文学综合插| 亚洲精品国产无套在线观| 91精品国产综合久久精品麻豆 | 久久久亚洲精华液精华液精华液| 成人av在线网站| 美女脱光内衣内裤视频久久网站| 国产精品久久久久aaaa樱花| 日韩一区二区在线看| 97久久精品人人做人人爽| 麻豆免费精品视频| 亚洲蜜桃精久久久久久久| 久久久亚洲精品石原莉奈| 欧美日免费三级在线| 高清shemale亚洲人妖| 免费看黄色91| 亚洲综合无码一区二区| 欧美国产乱子伦| 精品裸体舞一区二区三区| 欧美嫩在线观看| 一本久久综合亚洲鲁鲁五月天 | 亚洲精品午夜久久久| 亚洲精品在线免费播放| 91麻豆精品国产91久久久久久久久 | 亚洲伊人色欲综合网| 国产精品女主播在线观看| 日韩免费视频线观看| 91麻豆精品国产| 欧美人狂配大交3d怪物一区| 94色蜜桃网一区二区三区| 国产精品亚洲人在线观看| 美女www一区二区| 亚洲观看高清完整版在线观看| 亚洲免费看黄网站| 亚洲美女视频一区| 国产精品乱码一区二区三区软件 | 国产91精品一区二区麻豆网站 | 国产精品久久久久久久久久免费看| 精品三级av在线| 欧美xxxxx牲另类人与| 日韩美女一区二区三区四区| 欧美一区二区视频在线观看| 欧美日韩国产不卡| 制服丝袜亚洲播放| 欧美一级理论性理论a| 欧美日本免费一区二区三区| 欧美人狂配大交3d怪物一区| 91麻豆精品国产91久久久 | 免费高清不卡av| 免费人成黄页网站在线一区二区| 日韩av中文在线观看| 日韩高清中文字幕一区| 日韩精品福利网| 国模无码大尺度一区二区三区| 久久国产生活片100| 久久成人免费日本黄色| 国产a级毛片一区| 色婷婷精品大在线视频| 欧美视频一区在线| 日韩片之四级片| 久久精品这里都是精品| 国产农村妇女毛片精品久久麻豆| ●精品国产综合乱码久久久久| 亚洲天堂成人网| 午夜精品久久久久久不卡8050| 欧美aⅴ一区二区三区视频| 精品制服美女丁香| 91在线国产福利| 欧美日韩和欧美的一区二区| 欧美刺激午夜性久久久久久久| 国产亚洲一区字幕| 亚洲人成网站精品片在线观看| 亚洲福利视频一区二区| 麻豆91在线看| 99久久婷婷国产综合精品| 欧美色精品在线视频| 26uuu欧美| 一区二区三区蜜桃网| 久久er精品视频| 99视频在线精品| 精品国产电影一区二区| 中文字幕一区二区三区视频| 青青草91视频| 97久久超碰国产精品电影| 欧美日韩免费观看一区二区三区| 精品久久国产字幕高潮| 亚洲视频一区在线观看| 国产中文字幕精品| 欧美性生活久久| 国产农村妇女毛片精品久久麻豆 | 日韩精品欧美精品| 99视频超级精品| 亚洲精品一区二区三区在线观看| 亚洲欧美另类久久久精品2019| 久草这里只有精品视频| 欧美偷拍一区二区| 日本一区二区免费在线观看视频| 亚洲一区二区在线播放相泽| 国产成人av资源| 日韩一区二区精品| 亚洲成人手机在线| 91亚洲精品一区二区乱码| 久久精品欧美日韩精品| 美腿丝袜亚洲三区| 欧美日韩激情在线| 日韩伦理电影网| 成人高清伦理免费影院在线观看| 欧美一二三区在线观看| 亚洲成人综合在线| 99re成人在线| 亚洲欧洲av在线| 成人手机在线视频| 国产亚洲一区字幕| 国产一区二区三区免费看| 91精品国产综合久久福利软件 | 亚洲欧美日本韩国| 丰满少妇在线播放bd日韩电影| 欧美xxxxxxxx| 日本午夜一区二区| 91精品麻豆日日躁夜夜躁| 一区二区三区色| 91国产成人在线| 一级女性全黄久久生活片免费| 色94色欧美sute亚洲线路二| 亚洲视频一二区| 在线观看日韩精品| 亚洲一区二区美女| 欧洲精品一区二区| 亚洲已满18点击进入久久| 在线观看国产91| 天堂av在线一区| 日韩一区二区三区视频| 青椒成人免费视频| 国产午夜三级一区二区三| 国产传媒日韩欧美成人|