色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

go語(yǔ)言枚舉類型怎么用

馬哥Linux運(yùn)維 ? 來(lái)源:OSC開源社區(qū) ? 作者:OSC開源社區(qū) ? 2021-09-02 09:43 ? 次閱讀

go 語(yǔ)言枚舉類型是這么用的?在什么場(chǎng)景下會(huì)用到枚舉?本文對(duì) go 語(yǔ)言枚舉做了詳細(xì)講解。

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

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

學(xué)習(xí)、使用一門語(yǔ)言,是學(xué)習(xí)、理解語(yǔ)言本身的設(shè)計(jì)哲學(xué),同時(shí)也會(huì)感受到設(shè)計(jì)者的性格特點(diǎn)。

基礎(chǔ)工作

為了下面講解方便,這里使用 go modules 的方式先建立一個(gè)簡(jiǎn)單工程。

~/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

以 啟動(dòng)、運(yùn)行中、停止 這三個(gè)狀態(tài)為例,使用 const 關(guān)鍵來(lái)聲明一系列的常量值。在 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)

}

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

~/Projects/go/examples/enum

? go run enum.go

State running: 0

State pending: 1

State Stoped: 2

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

比如這個(gè)例子,

const (

a int = iota // a = 0

b int = iota // b = 1

c int = iota // c = 2

const d int = iota // d = 0

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

const (

a int = iota // a = 0

b // b = 1

c // c = 2

const d int = iota // d = 0

設(shè)想一下,如果此時(shí)有 50 或者 100 個(gè)常量數(shù),在 c 和 java 語(yǔ)言中寫出來(lái)會(huì)是什么情況。

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

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

當(dāng)然,你可以使用以下方式,來(lái)更接近其它語(yǔ)言的 enum,

// enum.go

...

type State intconst (

Running State = iota

Pending

Stopped

...

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

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

// enum.go

...

type State intconst (

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ù),運(yùn)行結(jié)果如下:

~/Projects/go/examples/enum

? go run enum.go

State running: Running

State pending: Pending

State Stoped: Stopped

是不是很魔幻,思路一下又開闊一些,長(zhǎng)見識(shí)了。把實(shí)際的值與打印字符分開,一般語(yǔ)言設(shè)計(jì)者不會(huì)想到。看到這里,有沒(méi)有這種的感覺(jué),go 語(yǔ)言的設(shè)計(jì)者并不是偷懶,而是為了可以偷懶想了很多、做了很多。

轉(zhuǎn)自:

youwu.today/skill/backend/using-enum-in-golang/

文章轉(zhuǎn)載:OSC開源社區(qū)

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3510

    瀏覽量

    43191
  • 枚舉
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    4671
  • go語(yǔ)言
    +關(guān)注

    關(guān)注

    1

    文章

    158

    瀏覽量

    9218

原文標(biāo)題:Golang 如何表示枚舉類型

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦

    EE-32:語(yǔ)言擴(kuò)展:內(nèi)存存儲(chǔ)類型、ASM和內(nèi)聯(lián)構(gòu)造

    電子發(fā)燒友網(wǎng)站提供《EE-32:語(yǔ)言擴(kuò)展:內(nèi)存存儲(chǔ)類型、ASM和內(nèi)聯(lián)構(gòu)造.pdf》資料免費(fèi)下載
    發(fā)表于 01-14 15:03 ?0次下載
    EE-32:<b class='flag-5'>語(yǔ)言</b>擴(kuò)展:內(nèi)存存儲(chǔ)<b class='flag-5'>類型</b>、ASM和內(nèi)聯(lián)構(gòu)造

    影目科技發(fā)布全球首款同傳翻譯眼鏡INMO GO2

    近日,搭載紫光展銳W517芯片平臺(tái)的INMO GO2由影目科技正式推出。作為全球首款專為商務(wù)場(chǎng)景設(shè)計(jì)的智能翻譯眼鏡,INMO GO2 以“快、準(zhǔn)、穩(wěn)”三大核心優(yōu)勢(shì),突破傳統(tǒng)翻譯產(chǎn)品局限,為全球商務(wù)人士帶來(lái)高效、自然、穩(wěn)定的跨語(yǔ)言
    的頭像 發(fā)表于 12-11 10:00 ?652次閱讀

    Java 枚舉與策略模式、函數(shù)式接口的結(jié)合:實(shí)現(xiàn)高內(nèi)聚低耦合的設(shè)計(jì)

    作者:京東物流 楊唯一 一、Java 枚舉類 Java 枚舉是一個(gè)特殊的類,一般表示一組常量,比如一年的 4 個(gè)季節(jié),一年的 12 個(gè)月份,一個(gè)星期的 7 天,方向有東南西北等。 我們?cè)跇I(yè)務(wù)需求開發(fā)
    的頭像 發(fā)表于 11-21 14:06 ?464次閱讀

    在學(xué)習(xí)go語(yǔ)言的過(guò)程踩過(guò)的坑

    作為一個(gè)5年的phper,這兩年公司和個(gè)人都在順應(yīng)技術(shù)趨勢(shì),新項(xiàng)目慢慢從php轉(zhuǎn)向了go語(yǔ)言,從2021年到現(xiàn)在,筆者手上也先后開發(fā)了兩個(gè)go項(xiàng)目。在學(xué)習(xí)go
    的頭像 發(fā)表于 11-11 09:22 ?333次閱讀

    go語(yǔ)言如何解決并發(fā)問(wèn)題

    作為一個(gè)后端開發(fā),日常工作中接觸最多的兩門語(yǔ)言就是PHP和GO了。無(wú)可否認(rèn),PHP確實(shí)是最好的語(yǔ)言(手動(dòng)狗頭哈哈),寫起來(lái)真的很舒爽,沒(méi)有任何心智負(fù)擔(dān),字符串和整型壓根就不用區(qū)分,開發(fā)速度真的是比
    的頭像 發(fā)表于 10-23 13:38 ?328次閱讀
    <b class='flag-5'>go</b><b class='flag-5'>語(yǔ)言</b>如何解決并發(fā)問(wèn)題

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-初識(shí)倉(cāng)頡開發(fā)語(yǔ)言

    、提升開發(fā)效率,例如插值字符串、主構(gòu)造函數(shù)、Flow 表達(dá)式、match、if-let、while-let 和重導(dǎo)出等語(yǔ)法,讓開發(fā)者可以較少編碼表達(dá)相關(guān)邏輯。 多范式編程 :倉(cāng)頡編程語(yǔ)言支持函數(shù)式、命令
    發(fā)表于 08-15 10:00

    三十分鐘入門基礎(chǔ)Go Java小子版

    前言 Go語(yǔ)言定義 Go(又稱 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發(fā)的一種靜態(tài)、強(qiáng)類型、編譯型
    的頭像 發(fā)表于 08-12 14:32 ?865次閱讀
    三十分鐘入門基礎(chǔ)<b class='flag-5'>Go</b> Java小子版

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-初識(shí)倉(cāng)頡開發(fā)語(yǔ)言

    、提升開發(fā)效率,例如插值字符串、主構(gòu)造函數(shù)、Flow 表達(dá)式、match、if-let、while-let 和重導(dǎo)出等語(yǔ)法,讓開發(fā)者可以較少編碼表達(dá)相關(guān)邏輯。 多范式編程 :倉(cāng)頡編程語(yǔ)言支持函數(shù)式、命令
    發(fā)表于 07-30 17:49

    技術(shù)干貨驛站 ▏深入理解C語(yǔ)言:基本數(shù)據(jù)類型和變量

    在C語(yǔ)言中,數(shù)據(jù)類型和變量是編程的基礎(chǔ),也是理解更復(fù)雜概念的關(guān)鍵。數(shù)據(jù)類型決定了變量的內(nèi)存分配、存儲(chǔ)范圍和操作方式,而變量則是存儲(chǔ)數(shù)據(jù)的容器。本篇文章將從基本數(shù)據(jù)類型和變量?jī)蓚€(gè)方面,帶
    的頭像 發(fā)表于 07-26 17:53 ?2456次閱讀
    技術(shù)干貨驛站 ▏深入理解C<b class='flag-5'>語(yǔ)言</b>:基本數(shù)據(jù)<b class='flag-5'>類型</b>和變量

    鴻蒙開發(fā)系統(tǒng)基礎(chǔ)能力:ohos.faultLogger 故障日志獲取

    故障類型枚舉
    的頭像 發(fā)表于 06-24 17:29 ?510次閱讀
    鴻蒙開發(fā)系統(tǒng)基礎(chǔ)能力:ohos.faultLogger 故障日志獲取

    請(qǐng)問(wèn)STVP+COSMIC環(huán)境下的go to definition怎么

    STVP+COSMIC環(huán)境下的go to definition怎么? 我現(xiàn)在go to definition在一個(gè)宏定義的時(shí)候有效果,但是函數(shù)什么的沒(méi)用,是怎么回事呢,是不是工程里面沒(méi)有設(shè)置好,求大家?guī)蛶兔Γ?/div>
    發(fā)表于 05-11 06:11

    關(guān)于go中接口類型的表示方法

    go是一個(gè)靜態(tài)性語(yǔ)言,每個(gè)變量都有靜態(tài)的類型,因此每個(gè)變量在編譯階段中有明確的變量類型,比如像:int、float32、MyType。
    的頭像 發(fā)表于 04-28 10:13 ?478次閱讀

    請(qǐng)問(wèn)STVD +COSMIC里面不能使用枚舉類型嗎?

    enumeration member 在定義枚舉類型的位置 typedef enum Gpio_Type { ST_TYPE_DI = 0, ST_TYPE_DO, ST_TYPE_AI, }GPIO_TYPE; 使用的是STVD +COSMIC
    發(fā)表于 04-28 08:08

    stm32f103 usb枚舉問(wèn)題求解

    移植了一個(gè)USB HID設(shè)備,發(fā)現(xiàn)必須初始化usart1,這樣usb hid設(shè)備才能枚舉,否則枚舉失敗,沒(méi)有發(fā)現(xiàn)硬件上有聯(lián)系啊?
    發(fā)表于 04-26 07:57

    Go語(yǔ)言中的函數(shù)、方法與接口詳解

    Go 沒(méi)有類,不過(guò)可以為結(jié)構(gòu)體類型定義方法。方法就是一類帶特殊的接收者參數(shù)的函數(shù)。方法接收者在它自己的參數(shù)列表內(nèi),位于 func 關(guān)鍵字和方法名之間。(非結(jié)構(gòu)體類型也可以定義方法)
    的頭像 發(fā)表于 04-23 16:21 ?1041次閱讀

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品
    主站蜘蛛池模板: 久草色香蕉视频在线 | 久久一级片| 青青热久久综合网伊人 | 黄色软件视频app | 亚洲第一页视频 | 欧美一级黄色影院 | 最近中文字幕MV免费看 | 男人的天堂黄色片 | 中文字幕亚洲无线码在线 | 亚洲欧美综合中文字幕 | 精品手机在线1卡二卡3卡四卡 | 午夜快车神马影视 | 99精品成人无码A片观看金桔 | 神马午夜不卡片 | 天天操夜夜噜 | 亚洲美女视频高清在线看 | 免费伦理片网站 | 久久久精品久久久久三级 | 99久久做夜夜爱天天做精品 | 精品欧美一区二区三区四区 | 色婷婷99综合久久久精品 | 国产精品…在线观看 | 国产三级级在线电影 | 把极品白丝老师啪到腿软 | 日本熟妇乱人伦A片精品软件 | 日本高清天码一区在线播放 | 老牛天天晚上夜噜噜噜 | 国精产品砖一区二区三区糖心 | 亚洲三级大片 | 高清 仑乱 一级 a | 91久久99久91天天拍拍 | 乌克兰14一18处交见血 | 吃奶吸咪咪动态图 | 蜜桃狠狠色伊人亚洲综合网站 | 欧美一第一页草草影院 | 97免费在线视频 | 双腿打开揉弄高潮H苏安安秦慕深 | 久草高清在线 | 2019中文字幕乱码免费 | 国产成人精品亚洲线观看 | 美女乱草鲍高清照片 |