久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

Go 語言中代替枚舉的辦法

枚舉類型用于聲明一組命名的常量,當一個變量有幾種可能的取值時,可以將它定義為枚舉類型。在 Go 語言中,并沒有提供枚舉類型,但是枚舉類型又是開發過程中非常重要的數據類型。因為它可以事先定義一組有效的值,可以有效地防止用戶提交無效數據,抽象到業務場景中就是我們平時網頁上遇到的下拉框,或者我們選擇快遞地址時的省市信息,均為枚舉類型的用武之地。所以在 Go 語言中對常量進行了一定的擴展,使其可以完美地替代枚舉類型。

 

1.常量中的iota

為了使常量可以更好地替代枚舉類型,Go 語言提供了一個iota關鍵字。使用iota初始化常量,可以生成一組規則類似的常量,但是不用每個常量都寫一遍表達式。在一個const()表達式中,從iota開始的常量會被置為0,向后每個常量的值為前一個常量的值加一

代碼示例:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? "fmt"
  • 5? )
  • 6
  • 7? type Weekday int //自定義一個星期類型,作為枚舉類型
  • 8
  • 9? const (
  • 10? ? ? ? Sun Weekday = iota
  • 11? ? ? ? Mon
  • 12? ? ? ? Tues
  • 13? ? ? ? Wed
  • 14? ? ? ? Thur
  • 15? ? ? ? Fri
  • 16? ? ? ? Sat
  • 17? )
  • 18
  • 19? func main() {
  • 20? ? ? ? ? fmt.Println("Sun :", Sun)
  • 21? ? ? ? ? fmt.Println("Mon :", Mon)
  • 22? ? ? ? ? fmt.Println("Tues:", Tues)
  • 23? ? ? ? ? fmt.Println("Wed :", Wed)
  • 24? ? ? ? ? fmt.Println("Thur:", Thur)
  • 25? ? ? ? ? fmt.Println("Fri :", Fri)
  • 26? ? ? ? ? fmt.Println("Sat :", Sat)
  • 27? }

Tips:自定義數據類型會在Go語言拓展已有類型中詳細介紹。這里可以簡單地理解為定義了一個Weekday的枚舉。

執行結果

圖片描述

 

2. 將枚舉值轉換為字符串

使用iota是可以使用 Go 語言的常量代替枚舉類型,但是由于輸出值均為阿拉伯數字,給調試和辨識造成了一定的困難。為了解決這一問題,Go 語言還提供了使常量枚舉值輸出為字符串的辦法。需要我們手動構造一個使用枚舉類型輸出字符串的方法。

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

代碼示例:

代碼塊
  • 1? package main
  • 2
  • 3? import (
  • 4? ? ? ? ? "fmt"
  • 5? )
  • 6
  • 7? type Weekday int //自定義一個星期類型,作為枚舉類型
  • 8
  • 9? const (
  • 10? ? ? ? Sun Weekday = iota
  • 11? ? ? ? Mon
  • 12? ? ? ? Tues
  • 13? ? ? ? Wed
  • 14? ? ? ? Thur
  • 15? ? ? ? Fri
  • 16? ? ? ? Sat
  • 17? )
  • 18
  • 19? func (w Weekday) String() string {
  • 20? ? ? ? ? switch w {
  • 21? ? ? ? ? case Sun:
  • 22? ? ? ? ? ? ? ? ? return "Sun"
  • 23? ? ? ? ? case Mon:
  • 24? ? ? ? ? ? ? ? ? return "Mon"
  • 25? ? ? ? ? case Tues:
  • 26? ? ? ? ? ? ? ? ? return "Tues"
  • 27? ? ? ? ? case Wed:
  • 28? ? ? ? ? ? ? ? ? return "Wed"
  • 29? ? ? ? ? case Thur:
  • 30? ? ? ? ? ? ? ? ? return "Thur"
  • 31? ? ? ? ? case Fri:
  • 32? ? ? ? ? ? ? ? ? return "Fri"
  • 33? ? ? ? ? case Sat:
  • 34? ? ? ? ? ? ? ? ? return "Sat"
  • 35? ? ? ? ?? }
  • 36? ? ? ? ? //不存在的枚舉類型就返回"N/A"
  • 37? ? ? ? ? return "N/A"
  • 38? }
  • 39
  • 40? func main() {
  • 41? ? ? ? ? fmt.Println("Sun :", Sun)
  • 42? ? ? ? ? fmt.Println("Mon :", Mon)
  • 43? ? ? ? ? fmt.Println("Tues:", Tues)
  • 44? ? ? ? ? fmt.Println("Wed :", Wed)
  • 45? ? ? ? ? fmt.Println("Thur:", Thur)
  • 46? ? ? ? ? fmt.Println("Sat :", Fri)
  • 47? ? ? ? ? fmt.Println("Sat :", Sat)
  • 48? }

執行結果

圖片描述

 

3. 小結

本文主要介紹了如何使用 Go 語言中的常量來代替枚舉類型。主要有兩個要點:

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

文章來源于網絡,侵刪!

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 乌拉特中旗| 定结县| 新闻| 滨州市| 平邑县| 青川县| 嘉鱼县| 诸暨市| 高台县| 桂东县| 华安县| 娱乐| 南木林县| 自贡市| 北宁市| 双峰县| 柯坪县| 长岭县| 平和县| 明光市| 资中县| 远安县| 湘阴县| 米林县| 武鸣县| 潢川县| 乌审旗| 弥渡县| 江陵县| 连南| 旌德县| 龙胜| 会昌县| 保德县| 湘阴县| 上饶市| 平陆县| 昌图县| 商南县| 绥阳县| 渝中区|