第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開(kāi)發(fā)者教程

Go 入門(mén)教程

Go 語(yǔ)言基礎(chǔ)教程
01 Go語(yǔ)言簡(jiǎn)介 02 Go 在 Windows 上的安裝及配置 03 Go 在 Linux 上的安裝與配置 04 Go 在 MacOS 上的安裝及配置 05 Git 的下載和安裝 06 VSCode 編輯器安裝和配置 07 Go 的變量聲明 08 Go 的變量賦值 09 Go 語(yǔ)言的 := 10 Go 的整型(int) 11 Go 的無(wú)符號(hào)整型(uint) 12 Go 的浮點(diǎn)型(float) 13 Go 的字符類(lèi)型 14 Go 的布爾型(bool) 15 Go 的強(qiáng)制類(lèi)型轉(zhuǎn)換 16 Go 語(yǔ)言的常量 17 Go 語(yǔ)言中代替枚舉的辦法 18 Go 語(yǔ)言中的運(yùn)算符 19 Go 語(yǔ)言的分支語(yǔ)句 20 Go 語(yǔ)言的循環(huán)語(yǔ)句 21 Go 語(yǔ)言的通道 22 Go 語(yǔ)言中的函數(shù) 23 Go 語(yǔ)言函數(shù)中的 defer 24 Go 語(yǔ)言中的閉包 25 Go 語(yǔ)言的指針 26 Go 語(yǔ)言中的數(shù)組 27 Go 語(yǔ)言中的切片 28 Go 語(yǔ)言中的 Map 29 Go 語(yǔ)言中的 range 30 Go 語(yǔ)言拓展以有類(lèi)型 31 Go 語(yǔ)言中的結(jié)構(gòu)體和"面向?qū)ο?quot; 32 Go 語(yǔ)言中的接口 33 Go 語(yǔ)言類(lèi)型的內(nèi)嵌 34 Go 語(yǔ)言中的 nil 35 Go 語(yǔ)言函數(shù)式編程 36 Go 語(yǔ)言中的錯(cuò)誤和異常處理 37 Go 語(yǔ)言的并發(fā) 38 Go 語(yǔ)言中的包 39 Go 語(yǔ)言 go mod 包依賴(lài)管理工具 40 Go 語(yǔ)言的文件操作 41 Go 語(yǔ)言中的系統(tǒng)包 42 Go 語(yǔ)言的 strings 系統(tǒng)包的使用 43 Go 語(yǔ)言中的變參 44 Go 語(yǔ)言中的反射 45 Go 語(yǔ)言性能測(cè)試 46 使用 Go 語(yǔ)言搭建簡(jiǎn)易登錄功能 47 使用 gin 包優(yōu)化登錄功能
首頁(yè) 慕課教程 Go 入門(mén)教程 Go 入門(mén)教程 17 Go 語(yǔ)言中代替枚舉的辦法

Go 語(yǔ)言中代替枚舉的辦法

枚舉類(lèi)型用于聲明一組命名的常量,當(dāng)一個(gè)變量有幾種可能的取值時(shí),可以將它定義為枚舉類(lèi)型。在 Go 語(yǔ)言中,并沒(méi)有提供枚舉類(lèi)型,但是枚舉類(lèi)型又是開(kāi)發(fā)過(guò)程中非常重要的數(shù)據(jù)類(lèi)型。因?yàn)樗梢允孪榷x一組有效的值,可以有效地防止用戶(hù)提交無(wú)效數(shù)據(jù),抽象到業(yè)務(wù)場(chǎng)景中就是我們平時(shí)網(wǎng)頁(yè)上遇到的下拉框,或者我們選擇快遞地址時(shí)的省市信息,均為枚舉類(lèi)型的用武之地。所以在 Go 語(yǔ)言中對(duì)常量進(jìn)行了一定的擴(kuò)展,使其可以完美地替代枚舉類(lèi)型。

1.常量中的iota

為了使常量可以更好地替代枚舉類(lèi)型,Go 語(yǔ)言提供了一個(gè)iota關(guān)鍵字。使用iota初始化常量,可以生成一組規(guī)則類(lèi)似的常量,但是不用每個(gè)常量都寫(xiě)一遍表達(dá)式。在一個(gè)const()表達(dá)式中,從iota開(kāi)始的常量會(huì)被置為0,向后每個(gè)常量的值為前一個(gè)常量的值加一。

代碼示例:

package main

import (
    "fmt"
)

type Weekday int //自定義一個(gè)星期類(lèi)型,作為枚舉類(lèi)型

const (
    Sun Weekday = iota
    Mon
    Tues
    Wed
    Thur
    Fri
    Sat
)

func main() {
    fmt.Println("Sun :", Sun)
    fmt.Println("Mon :", Mon)
    fmt.Println("Tues:", Tues)
    fmt.Println("Wed :", Wed)
    fmt.Println("Thur:", Thur)
    fmt.Println("Fri :", Fri)
    fmt.Println("Sat :", Sat)
}

Tips:自定義數(shù)據(jù)類(lèi)型會(huì)在Go語(yǔ)言拓展已有類(lèi)型中詳細(xì)介紹。這里可以簡(jiǎn)單地理解為定義了一個(gè)Weekday的枚舉。

執(zhí)行結(jié)果

圖片描述

2. 將枚舉值轉(zhuǎn)換為字符串

使用iota是可以使用 Go 語(yǔ)言的常量代替枚舉類(lèi)型,但是由于輸出值均為阿拉伯?dāng)?shù)字,給調(diào)試和辨識(shí)造成了一定的困難。為了解決這一問(wèn)題,Go 語(yǔ)言還提供了使常量枚舉值輸出為字符串的辦法。需要我們手動(dòng)構(gòu)造一個(gè)使用枚舉類(lèi)型輸出字符串的方法。

Tips:用的比較少,稍作了解即可

代碼示例:

package main

import (
    "fmt"
)

type Weekday int //自定義一個(gè)星期類(lèi)型,作為枚舉類(lèi)型

const (
    Sun Weekday = iota
    Mon
    Tues
    Wed
    Thur
    Fri
    Sat
)

func (w Weekday) String() string {
    switch w {
    case Sun:
        return "Sun"
    case Mon:
        return "Mon"
    case Tues:
        return "Tues"
    case Wed:
        return "Wed"
    case Thur:
        return "Thur"
    case Fri:
        return "Fri"
    case Sat:
        return "Sat"
    }
    //不存在的枚舉類(lèi)型就返回"N/A"
    return "N/A"
}

func main() {
    fmt.Println("Sun :", Sun)
    fmt.Println("Mon :", Mon)
    fmt.Println("Tues:", Tues)
    fmt.Println("Wed :", Wed)
    fmt.Println("Thur:", Thur)
    fmt.Println("Fri :", Fri)
    fmt.Println("Sat :", Sat)
}

執(zhí)行結(jié)果

圖片描述

3. 小結(jié)

本文主要介紹了如何使用 Go 語(yǔ)言中的常量來(lái)代替枚舉類(lèi)型。主要有兩個(gè)要點(diǎn):

  • 自定義枚舉類(lèi)型,第一個(gè)常量使用iota來(lái)賦值。
  • 手動(dòng)構(gòu)建String()方法,使常量輸出為字符串。