精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go中你用對枚舉了么?

開發 后端
枚舉是強類型編程語言中的一種類型,由一組名稱和值組成。通常用來在編程語言中充當常量的標識符。

[[377256]]

枚舉的本質是什么,我們天天寫代碼用枚舉,那啥是枚舉啊。wiki上是這么說的

  • In computer programming, an enumerated type (also called enumeration, enum, or factor in the R programming language, and a categorical variable in statistics) is a data type consisting of a set of named values called elements, members, enumeral, or enumerators of the type. The enumerator names are usually identifiers that behave as constants in the language. An enumerated type can be seen as a degenerate tagged union of unit type. A variable that has been declared as having an enumerated type can be assigned any of the enumerators as a value. In other words, an enumerated type has values that are different from each other, and that can be compared and assigned, but are not specified by the programmer as having any particular concrete representation in the computer’s memory; compilers and interpreters can represent them arbitrarily.

用人話說就是

枚舉是強類型編程語言中的一種類型,由一組名稱和值組成。通常用來在編程語言中充當常量的標識符。

沒毛病,我們也確實是這樣使用的。比如上學的時候,經常寫c的小玩具代碼,c標準里面提供了enum關鍵字,寫起來比較直白,使用的時候和struct類似,需要enum week這樣寫,c里面默認枚舉值是從0開始,int類型,其實c里面就是把枚舉當做int類型來用的。

  1. #include<stdio.h>  
  2.    
  3. enum week{Mon, Tue, Wed, Thur, Fri, Sat, Sun};  
  4.    
  5. int main()  
  6. {  
  7.     enum week day;             // 需要加 enum 關鍵字 
  8.     day = Wed;  
  9.     printf("%d",day);          // 輸出 2 
  10.     int i;  
  11.     for (i=Mon; i<=Sun; i++){  // 可以直接把枚舉類型賦值給int類型 
  12.       printf("%d ", i);        // 輸出 0,1,2,3,4,5,6 
  13.     } 
  14.     return 0;  
  15. }   

上面的例子沒問題,在初始化的時候,枚舉值默認情況下,編譯器會從分配0開始的值,例如上面的Mon=0,Tue=1…,但是也會想不按照編譯器的默認分配方式,由我自己分配,那怎么寫呢,看下面的例子:

  1. #include <stdio.h>  
  2. enum day {sunday = 1, monday, tuesday = 5,  
  3.           wednesday, thursday = 10, friday, saturday};  
  4.    
  5. int main()  
  6. {  
  7.     printf("%d %d %d %d %d %d %d", sunday, monday, tuesday,  
  8.             wednesday, thursday, friday, saturday); // 輸出1 2 5 6 10 11 12 
  9.     return 0;  
  10. }  

也就是說,枚舉里面可以按任何順序將值分配給某個名稱。所有未分配的名稱都會把值作為前一個名稱的值加一。

其實,定義幾個常量的事,是不是用宏這個東西更好呢,比如這么寫

  1. #define sunday  0  
  2. #define monday  1  
  3. #define tuesday 2 

但是老師說了,盡量別用宏,不是說宏不好,宏也好,編譯器替換,沒有運行期啥事,多快啊,但是有幾個問題:

1)宏沒有作用域一說 2)枚舉是類型安全的

扯的有點遠了,現在回來看看Go里面的枚舉怎么寫。當然也很簡單了,官方教導我們這么寫:

  1. type ByteSize float64 
  2.  
  3. const ( 
  4.     _           = iota 
  5.     KB ByteSize = 1 << (10 * iota) 
  6.     MB 
  7.     GB 

Go里面更簡潔了,直接把enum關鍵字去掉了,其實從Go的角度看,枚舉不就是常量么,搞這么多語法糖干嘛,Go里面提供了一個關鍵字iota可以實現常量的遞增,同時也支持手動賦值,iota和手動賦值結合起來,就可以實現類似c里面的效果

  1. const ( 
  2.     A0 = iota 
  3.     A1 = iota 
  4.     A2 = iota 
  5. fmt.Println(A0, A1, A2) // "0 1 2" 

可以 簡寫成這樣

  1. const ( 
  2.     A0 = iota 
  3.     A1 
  4.     A2 

也可以從1開始

  1. const ( 
  2.     A1 = iota + 1 
  3.     A2 
  4.     A3 
  5. fmt.Println(A1, A2, A3) // "1 2 3" 

或者跳過某個值

  1. const ( 
  2.     C1 = iota + 1 
  3.     _ 
  4.     C3 
  5.     C4 
  6. fmt.Println(C1, C3, C4) // "1 3 4" 

看到這里你或許有個疑問,這里的枚舉其實就是常量么,那怎么寫是字符串類型的枚舉呢,你可能會說,當然是用字符串常量了。但是那只是字符串常量了,沒有枚舉的性質。我可能想要的是一種字符串到值的枚舉類型。思考再三,看我這種寫法是否可以:

  • 步驟一:創建一個新的int類型
  • 步驟二:使用iota表示值
  • 步驟三:給這個新的類型一個String的方法
  1. type Direction int 
  2.  
  3. const ( 
  4.     North Direction = iota 
  5.     East 
  6.     South 
  7.     West 
  8.  
  9. func (d Direction) String() string { 
  10.     return [...]string{"North""East""South""West"}[d] 

使用的時候

  1. var d Direction = North 
  2. fmt.Print(d) 
  3. switch d { 
  4. case North: 
  5.     fmt.Println(" goes up."
  6. case South: 
  7.     fmt.Println(" goes down."
  8. default
  9.     fmt.Println(" stays put."

當然還有一種方法,比較stupid

  1. type weekday string 
  2.  
  3. func (w weekday) isWeekday() weekday { 
  4.     return w 
  5.  
  6. type Weekday interface { 
  7.     isWeekday() weekday 
  8.  
  9. const ( 
  10.     Monday   = weekday("Monday"
  11.     Tuesday  = weekday("Tuesday"
  12.     Wendsday = weekday("Wendsday"
  13.     Thursday = weekday("Thursday"
  14.     Friday   = weekday("Friday"
  15.     Saturday = weekday("Saturday"
  16.     Sunday   = weekday("Sunday"
  17. // 使用 
  18. func main() { 
  19.     var d1 = weekday.Monday 
  20.     var d2 = weekday.Tuesday 
  21.  
  22.     fmt.Println(d1, d2, d1 == d2, d1 == weekday.Monday) 

如果使用struct表示枚舉,那其實還可以使用反射的方式,比如下面這樣寫:

  1. import ( 
  2.    "reflect" 
  3.  
  4. type weekday struct { 
  5.    Monday, Tuesday, Wendsday, Thursday, Friday, Saturday, Sunday int 
  6.  
  7. func (c weekday) Get(id string) int { 
  8.    vo := reflect.ValueOf(c) 
  9.    typeVo := vo.Type() 
  10.  
  11.    for i := 0; i < vo.NumField(); i++ { 
  12.       if typeVo.Field(i).Name == id { 
  13.          return vo.Field(i).Interface().(int
  14.       } 
  15.    } 
  16.    return 0 
  17.  
  18. var weekdayEnum = weekday { 
  19.    Monday:   1, 
  20.    Tuesday:  2, 
  21.    Wendsday: 3, 
  22.    Thursday: 4, 
  23.    Friday:   5, 
  24.    Saturday: 6, 
  25.    Sunday:   7 

本文轉載自微信公眾號「碼小菜」,可以通過以下二維碼關注。轉載本文請聯系碼小菜公眾號。

 

責任編輯:武曉燕 來源: 碼小菜
相關推薦

2018-07-01 08:34:09

緩存數據服務

2019-12-10 10:13:58

HTTPNginxRedirect

2021-03-16 22:44:18

Go語言開發

2022-07-25 14:54:32

前端

2021-11-29 09:45:57

枚舉Go代碼

2022-06-09 10:42:47

GoJSON

2021-09-02 12:10:52

Go語言枚舉類型

2020-05-06 20:40:03

Go編程語言

2021-09-13 07:53:31

Go錯誤處理

2022-08-15 08:06:49

Go語言類型

2022-05-18 08:00:26

函數劫持JavaScript鉤子函數

2022-02-21 18:16:38

Go語言枚舉

2025-08-29 10:05:00

GarbleGo代碼

2025-08-06 08:53:35

2019-08-27 08:24:17

簡歷技能工作

2009-07-20 10:18:49

PHP 5.3命名空間

2020-06-23 14:09:49

枚舉JDK場景

2024-01-18 00:16:07

2021-09-13 07:23:52

Go Set 設計

2021-11-08 10:58:08

變量依賴圖排序
點贊
收藏

51CTO技術棧公眾號

92国产精品久久久久首页| 亚洲成色999久久网站| www.午夜色| 国产91绿帽单男绿奴| 国产日韩高清一区二区三区在线| 国产午夜精品全部视频在线播放 | 久久国产日本精品| 久久激情五月丁香伊人| 加勒比精品视频| 韩国精品视频在线观看| 午夜精品福利视频网站| 最新不卡av| 每日更新在线观看av| 国产在线麻豆精品观看| 亲爱的老师9免费观看全集电视剧| 国产91在线播放九色| 日韩三区视频| 精品国产乱码久久久久久影片| 日本网站免费在线观看| v片在线观看| 欧美国产国产综合| 精品国产乱码久久久久久蜜柚| 国产又黄又大又爽| 日韩在线观看一区二区| 97色伦亚洲国产| 亚洲国产成人精品综合99| 欧美限制电影| 亚洲欧美精品一区| www.88av| 岛国av一区| 日韩欧美精品在线视频| 超碰超碰在线观看| 四虎成人在线| 欧美午夜宅男影院在线观看| 成人av在线不卡| 久久国产精品一区| 国产精品久久午夜| 日本欧美精品久久久| 五月天婷婷在线播放| 国产91精品一区二区麻豆网站| 国产日产久久高清欧美一区| 男人日女人网站| 亚洲最黄网站| 91av视频导航| 日韩少妇裸体做爰视频| 亚洲免费成人| 91av视频在线观看| 黄网在线观看视频| 国产农村妇女精品一二区| 国模视频一区二区三区| 日本熟妇毛耸耸xxxxxx| 极品av少妇一区二区| 欧美劲爆第一页| 国产一级二级三级| 亚洲福利免费| 91黑丝在线观看| 91在线视频在线观看| 免费中文字幕日韩欧美| 国产成人亚洲综合青青| 国产精品传媒在线观看| 蜜臀精品一区二区三区在线观看 | 中文字幕永久在线观看| 日本不卡视频在线观看| 国产精品一区专区欧美日韩| 一区二区三区午夜| 激情五月婷婷综合| 99久久99久久精品国产片| 成人黄色免费视频| 91在线播放网址| 日本一区视频在线观看| av二区在线| 亚洲精品五月天| 精品丰满人妻无套内射| 亚洲一二三四| 欧美日韩高清在线| 一个人看的视频www| 日韩精品一级| 亚洲免费精彩视频| 成人黄色短视频| 欧美日韩亚洲一区三区| 国产91精品久久久久久| 中文 欧美 日韩| 国产a级毛片一区| 蜜桃狠狠色伊人亚洲综合网站| 大胆av不用播放器在线播放| 亚洲私人影院在线观看| 僵尸世界大战2 在线播放| 成人免费短视频| 欧美日本在线播放| 久久久午夜精品福利内容| 中国av一区| 欧美xxxx14xxxxx性爽| 国产无套在线观看| 人人超碰91尤物精品国产| 91色在线观看| 色视频免费在线观看| 中文字幕亚洲综合久久菠萝蜜| 黄色片网址在线观看| 国产一区二区三区朝在线观看| 日韩午夜精品电影| 好吊视频在线观看| 黄色综合网站| 国产欧美日韩中文字幕| 偷拍自拍在线| 亚洲精品欧美综合四区| 欧美成人黑人猛交| 亚洲亚洲一区二区三区| 最新国产成人av网站网址麻豆| 久久精品人妻一区二区三区| 日本在线不卡视频| 精品国产一区二区三区麻豆免费观看完整版| 永久免费在线观看视频| 懂色aⅴ精品一区二区三区蜜月| 狠狠操狠狠干视频| 精品在线99| 久久久久久999| 夜夜嗨av禁果av粉嫩avhd| 91农村精品一区二区在线| 免费成人进口网站| 国产精品高潮久久| 亚洲人成电影网站色…| 亚洲精品1区2区3区| 国产一区啦啦啦在线观看| 日本黑人久久| 激情都市亚洲| 日韩毛片中文字幕| 国产乡下妇女做爰视频| 国产99久久久国产精品潘金网站| 一区二区三视频| 日本中文字幕一区二区| 亚洲女人天堂av| 一区二区三区视频免费看| 国产精品538一区二区在线| 一区二区三区的久久的视频| av有声小说一区二区三区| 日韩成人在线网站| 99精品视频99| 91丨porny丨首页| 国产v片免费观看| 国产精品17p| 久久久久久久久亚洲| 国内精品国产成人国产三级| 国产精品二三区| www亚洲成人| 成人在线电影在线观看视频| 国产成人久久久| 成人性生交大片免费看午夜| 在线视频欧美精品| 欧美激情 一区| 麻豆精品在线视频| 中文字幕欧美日韩一区二区| 成人做爰免费视频免费看| 这里只有视频精品| 一级片视频播放| 亚洲国产精品精华液ab| 国产喷水theporn| 97久久夜色精品国产| 91日本视频在线| 人妖欧美1区| 精品国产乱码久久久久久久 | 国产三区在线观看| 欧美一区二区免费| 日韩免费一二三区| 91亚洲男人天堂| 日韩视频第二页| 禁果av一区二区三区| 国产精品入口免费视| 黄色小网站在线观看| 欧美成人综合网站| 天天综合网久久综合网| 日本一区二区三区dvd视频在线 | 视频一区国产| 欧美一级视频免费在线观看| 成人在线观看免费| 欧美岛国在线观看| 日韩一区二区视频在线| 中日韩av电影| 香蕉久久久久久av成人| 香蕉久久夜色精品国产| 性欧美videosex高清少妇| 欧美区一区二区| 欧美有码在线观看视频| 久久久久久国产精品免费无遮挡| 亚洲福利在线视频| 婷婷激情五月综合| 一区二区三区中文字幕电影 | 中文字幕视频一区| 北京富婆泄欲对白| 奇米色777欧美一区二区| 欧美美女黄色网| 国产成人精品免费视| 91成人免费视频| 小黄鸭精品aⅴ导航网站入口| 日韩中文字幕国产| 少妇精品高潮欲妇又嫩中文字幕| 欧美性大战久久| 精品无码久久久久| 国产精品久久久久久久午夜片| 超碰caoprom| 国产最新精品精品你懂的| 黄色片视频在线播放| 欧美日韩视频| 在线播放 亚洲| 国产成人调教视频在线观看| 国产精品区一区| 日韩欧乱色一区二区三区在线 | 中文在线第一页| 亚洲美女视频一区| 婷婷综合在线视频| 久久这里只有精品首页| 丰满人妻一区二区三区大胸| 免费在线看一区| 无码人妻丰满熟妇区毛片18 | 激情五月亚洲色图| 99av国产精品欲麻豆| 97超碰人人爱| 日韩一区二区中文| 欧美一区观看| 人人精品视频| 国产精品免费一区二区| 玖玖玖视频精品| 国产精品欧美在线| 欧美三区四区| 日本成人在线视频网址| 女海盗2成人h版中文字幕| 欧美肥老妇视频| 国产原创视频在线观看| 日韩一区二区福利| av在线电影播放| 国产亚洲精品美女久久久| 日本韩国一区| 亚洲乱亚洲乱妇无码| 天天干免费视频| 精品国产3级a| 亚洲欧美另类视频| 精品国精品国产尤物美女| av网站在线免费看| 日韩午夜电影av| aaa一区二区三区| 欧美一级专区免费大片| 国产成人精品毛片| 欧美一区二区三区视频| 国产三级精品在线观看| 日韩欧美国产高清| 亚洲精品久久久久久动漫器材一区| 91精品蜜臀在线一区尤物| 99精品国产99久久久久久97| 制服丝袜亚洲色图| 国产成人精品免费看视频| 精品国产免费人成在线观看| 亚洲欧美另类日韩| 国产视频精品在线| 高清av在线| 日韩中文字幕视频在线| 菠萝蜜视频国产在线播放| 免费成人高清视频| xxx.xxx欧美| 欧洲美女7788成人免费视频| 日日夜夜天天综合| 成人性生交大片免费看视频直播| 精品亚洲二区| 精品久久久久久一区二区里番| 欧美一区二区三区久久| 日本三级中国三级99人妇网站| 欧美色网址大全| 超碰成人在线免费观看| 极品裸体白嫩激情啪啪国产精品| 1024av视频| 免费久久精品视频| 初高中福利视频网站| 91免费小视频| 黑人と日本人の交わりビデオ| 亚洲欧美电影一区二区| 男人的天堂一区二区| 欧洲亚洲精品在线| www.亚洲欧美| 亚洲欧美综合v| 老司机精品影院| 午夜精品理论片| 先锋影音一区二区| 国产女主播一区二区| 日本a口亚洲| 日韩一区二区高清视频| 视频一区二区不卡| 国产不卡的av| 久久久久国产精品人| 欧美成人免费观看视频| 欧美日韩亚洲网| 国产伦理吴梦梦伦理| 亚洲经典中文字幕| 免费黄色在线看| 欧美亚洲视频在线看网址| 亚洲男人在线| 日本10禁啪啪无遮挡免费一区二区| 我不卡影院28| 久章草在线视频| 国产精品一二二区| 亚洲色图日韩精品| 午夜精品爽啪视频| 99久久夜色精品国产亚洲| 亚洲精品自在久久| 青青青国内视频在线观看软件| 日韩av免费网站| 成人香蕉社区| 一级一片免费播放| 日本在线观看不卡视频| 朝桐光av一区二区三区| 亚洲欧美日韩在线不卡| 在线观看亚洲黄色| 日韩av在线一区| 日本片在线观看| 国产欧美久久久久久| 亚洲黄页在线观看| 97视频在线免费| 国产成人一区二区精品非洲| 国产日韩精品中文字无码| 欧美性猛交xxxxx水多| 风流老熟女一区二区三区| 久久九九热免费视频| 日韩一区二区三区免费视频| 麻豆成人小视频| 9色精品在线| 欧产日产国产精品98| 一区二区高清免费观看影视大全| 在线播放精品视频| 中文字幕不卡av| 高清av一区二区三区| 乱一区二区三区在线播放| 日韩图片一区| 大乳护士喂奶hd| 亚洲国产精品久久久久秋霞影院| 精品国产乱码久久久久久蜜臀网站| 色综久久综合桃花网| 国产亚洲精品精品国产亚洲综合| 区一区二区三区中文字幕| 母乳一区在线观看| 国产精品无码网站| 欧美日韩亚洲视频一区| 青青草在线播放| 琪琪亚洲精品午夜在线| 国产成人调教视频在线观看| 999精品网站| 国产欧美精品一区| 亚洲视屏在线观看| 丝袜亚洲另类欧美重口| 国产91欧美| 樱花www成人免费视频| 国内成+人亚洲+欧美+综合在线 | 国产中文在线视频| 国产精品高潮呻吟久久av黑人| 精品国产乱码久久久久久果冻传媒 | av中文资源在线| 成人自拍性视频| 欧美精品一卡| 先锋资源av在线| 欧美小视频在线观看| 大地资源中文在线观看免费版| 国产欧美精品日韩| 欧美日一区二区在线观看 | 国模gogo一区二区大胆私拍 | 亚洲图中文字幕| 亚洲一区二区av| 国产 欧美 日韩 一区| 91丨九色porny丨蝌蚪| 中国老头性行为xxxx| 欧美精品一区二区三区国产精品| 91蝌蚪精品视频| 日本在线观看a| 中文字幕一区三区| 免费观看a视频| 人人澡人人澡人人看欧美| 日韩在线观看| 亚洲午夜久久久久久久久| 欧美色道久久88综合亚洲精品| 成人精品福利| 91久久精品久久国产性色也91| 亚洲精品少妇| 欧美大波大乳巨大乳| 日韩三级中文字幕| 亚洲最大成人| 狠狠噜天天噜日日噜| 91美女片黄在线观看91美女| 中文文字幕一区二区三三| 欧美激情一区二区三区高清视频| 精品中文一区| 日本成人在线免费| 色8久久精品久久久久久蜜 | 亚洲国产精品视频| 又爽又大又黄a级毛片在线视频| 国产 高清 精品 在线 a| 美女诱惑一区| 精品无码一区二区三区电影桃花 | 久久久www成人免费毛片| 亚洲欧美成人网| 欧美片网站免费| 国产又大又黄又猛| 精品久久在线播放| 香蕉成人app免费看片| 视频一区在线免费观看| 成人h版在线观看|