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

go?doudou應(yīng)用中使用枚舉類型教程示例

 更新時間:2022年12月07日 10:58:14   作者:武斌  
這篇文章主要為大家介紹了go?doudou應(yīng)用中使用枚舉類型教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

go語言支持語法自己實現(xiàn)枚舉類型

我們都知道go語言沒有原生的枚舉類型,但是做業(yè)務(wù)開發(fā)有些時候沒有枚舉類型確實不方便前后端聯(lián)調(diào)。我們可以通過go語言支持的語法自己實現(xiàn)枚舉類型。請看以下示例代碼和注釋說明:

// 首先定義一個int類型別名,新類型名稱就是枚舉類型名稱
type KeyboardLayout int
// 然后定義若干常量,作為枚舉值
// 第一個常量是默認值
const (
	UNKNOWN KeyboardLayout = iota
	QWERTZ
	AZERTY
	QWERTY
)
// 再定義setter方法將傳入字符串類型枚舉值轉(zhuǎn)成上面定義的常量
func (k *KeyboardLayout) StringSetter(value string) {
	switch value {
	case "UNKNOWN":
		*k = UNKNOWN
	case "QWERTY":
		*k = QWERTY
	case "QWERTZ":
		*k = QWERTZ
	case "AZERTY":
		*k = AZERTY
	default:
		*k = UNKNOWN
	}
}
// 有setter自然就有g(shù)etter
func (k *KeyboardLayout) StringGetter() string {
	switch *k {
	case UNKNOWN:
		return "UNKNOWN"
	case QWERTY:
		return "QWERTY"
	case QWERTZ:
		return "QWERTZ"
	case AZERTY:
		return "AZERTY"
	default:
		return "UNKNOWN"
	}
}
// 最后再定義一組UnmarshalJSON和MarshalJSON方法
// UnmarshalJSON用于json反序列化
func (k *KeyboardLayout) UnmarshalJSON(bytes []byte) error {
	var _k string
	err := json.Unmarshal(bytes, &_k)
	if err != nil {
		return err
	}
	k.StringSetter(_k)
	return nil
}
// MarshalJSON用于json序列化
func (k KeyboardLayout) MarshalJSON() ([]byte, error) {
	return json.Marshal(k.StringGetter())
}

定義以后就可以直接用作結(jié)構(gòu)體的屬性類型或是接口請求參數(shù)類型。

結(jié)構(gòu)體類型示例

type Keyboard struct {
	Layout  KeyboardLayout `json:"layout,omitempty"`
	Backlit bool            `json:"backlit,omitempty"`
}

接口請求參數(shù)示例

type EnumDemo interface {
	GetKeyboard(ctx context.Context, layout vo.KeyboardLayout) (data string, err error)
	GetKeyboard2(ctx context.Context, layout *vo.KeyboardLayout) (data string, err error)
	GetKeyboards(ctx context.Context, layout []vo.KeyboardLayout) (data []string, err error)
	GetKeyboards2(ctx context.Context, layout *[]vo.KeyboardLayout) (data []string, err error)
	GetKeyboards5(ctx context.Context, layout ...vo.KeyboardLayout) (data []string, err error)
	Keyboard(ctx context.Context, keyboard vo.Keyboard) (data string, err error)
}

完整示例代碼:github.com/unionj-clou…

關(guān)于go-doudou的更多特性和用法請參考官方文檔:go-doudou.unionj.cloud/

go-doudou微服務(wù)框架

以上就是go doudou應(yīng)用中使用枚舉類型教程示例的詳細內(nèi)容,更多關(guān)于go doudou枚舉類型的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang 定時器(Timer 和 Ticker),這篇文章就夠了

    Golang 定時器(Timer 和 Ticker),這篇文章就夠了

    這篇文章主要介紹了Golang 定時器(Timer 和 Ticker),這篇文章就夠了,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 基于go手動寫個轉(zhuǎn)發(fā)代理服務(wù)的代碼實現(xiàn)

    基于go手動寫個轉(zhuǎn)發(fā)代理服務(wù)的代碼實現(xiàn)

    這篇文章主要介紹了基于go手動寫個轉(zhuǎn)發(fā)代理服務(wù)的代碼實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Go?channel結(jié)構(gòu)體源碼和讀寫和關(guān)閉過程詳解

    Go?channel結(jié)構(gòu)體源碼和讀寫和關(guān)閉過程詳解

    這篇文章主要介紹了Go?channel結(jié)構(gòu)體源碼和讀寫和關(guān)閉過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Golang實現(xiàn)事務(wù)型內(nèi)存數(shù)據(jù)庫的方法詳解

    Golang實現(xiàn)事務(wù)型內(nèi)存數(shù)據(jù)庫的方法詳解

    內(nèi)存數(shù)據(jù)庫經(jīng)我們經(jīng)常用到,例如Redis,那么如何從零實現(xiàn)一個內(nèi)存數(shù)據(jù)庫呢,本文旨在介紹如何使用Golang編寫一個KV內(nèi)存數(shù)據(jù)庫MossDB
    2023-03-03
  • Go關(guān)鍵字defer的使用和底層實現(xiàn)

    Go關(guān)鍵字defer的使用和底層實現(xiàn)

    defer是Go語言的關(guān)鍵字,一般用于資源的釋放和異常的捕捉,defer語句后將其后面跟隨的語句進行延遲處理,就是說在函數(shù)執(zhí)行完畢后再執(zhí)行調(diào)用,也就是return的ret指令之前,本文給大家介紹了Go關(guān)鍵字defer的使用和底層實現(xiàn),需要的朋友可以參考下
    2023-11-11
  • Go工具鏈之代碼測試神器go?test詳解

    Go工具鏈之代碼測試神器go?test詳解

    這篇文章主要給大家介紹Go?工具鏈go?test,go?test?是?Go?工具鏈中的一個命令,用于編譯和運行按照要求編寫的?Golang?測試代碼,并生成測試報告,感興趣的同學(xué)跟著小編一起來看看本文吧
    2023-07-07
  • Golang的Crypto/SHA256庫實戰(zhàn)指南

    Golang的Crypto/SHA256庫實戰(zhàn)指南

    無論是在保護數(shù)據(jù)安全、驗證數(shù)據(jù)完整性,還是在構(gòu)建復(fù)雜的安全系統(tǒng)中,crypto/sha256都是Golang程序員不可或缺的工具,本文主要介紹了Golang的Crypto/SHA256庫實戰(zhàn)指南,感興趣的可以了解一下
    2024-02-02
  • golang中使用proto3協(xié)議導(dǎo)致的空值字段不顯示的問題處理方案

    golang中使用proto3協(xié)議導(dǎo)致的空值字段不顯示的問題處理方案

    這篇文章主要介紹了golang中使用proto3協(xié)議導(dǎo)致的空值字段不顯示的問題處理方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Golang WebView跨平臺的桌面應(yīng)用庫的使用

    Golang WebView跨平臺的桌面應(yīng)用庫的使用

    Golang WebView是一個強大的桌面應(yīng)用庫,本文介紹了Golang WebView的特點和使用方法,并列舉示例詳細的介紹了其在實際項目中的應(yīng)用,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • GoLang中的加密方法小結(jié)

    GoLang中的加密方法小結(jié)

    這篇文章主要介紹了GoLang中的加密方法。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評論

神农架林区| 宣武区| 广宗县| 札达县| 土默特左旗| 来宾市| 中方县| 大石桥市| 长海县| 泗水县| 丹棱县| 雷州市| 宣城市| 肇源县| 萨迦县| 龙泉市| 高尔夫| 百色市| 永康市| 保亭| 浠水县| 康乐县| 潜山县| 长治县| 兴化市| 含山县| 南华县| 天镇县| 买车| 新昌县| 毕节市| 永济市| 沧州市| 赤城县| 梁河县| 山阳县| 麟游县| 英山县| 尚义县| 高要市| 澳门|