脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - Go语言基础枚举的用法及示例详解

Go语言基础枚举的用法及示例详解

2021-12-07 12:48枫少文 Golang

这篇文章主要为大家介绍了Go语言基础枚举的用法及示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Go语言基础枚举的用法及示例详解

概述

将变量的值一一列举出来,变量只限于列举出来的值的范围内取值

Go语言中没有枚举这种数据类型的,但是可以使用const配合iota模式来实现

一、普通枚举

?
1
2
3
4
5
6
const (
     cpp = 0
     java = 1
     python = 2
     golang = 3
)

二、自增枚举

iota只能在常量的表达式中使用

?
1
fmt.Println(iota)  //undefined: iota

它默认开始值是0,const中每增加一行加1

?
1
2
3
4
5
const (
        a = iota  //0
        c         //1
        d         //2
    )

每次 const 出现时,都会让 iota 初始化为0

?
1
2
3
4
5
const d = iota    // a=0
const (
      e = iota     //b=0
      f            //c=1
)

如果中断iota,必须显式恢复!!!

?
1
2
3
4
5
6
7
const (
    Low = iota    //0
    Medium        //1
    High = 100   //100
    Super        //100
    Band = iota  //4
)

如果是同一行,值都一样

?
1
2
3
4
5
const (
i          = iota
j1, j2, j3 = iota, iota, iota
k          = iota
)

可跳过的值

?
1
2
3
4
5
6
7
const (
        k1 = iota // 0
        k2        // 1
        _         //2
        _         //3
        k3       // 4
    )

中间插入一个值

?
1
2
3
4
5
6
7
const (
    Sun = iota //Sun = 0
    Mon        // Mon = 1
    Tue = 7    //7
    Thu = iota // 3
    Fri        //4
)

注意

  • iota 必须配合const 使用,否则undefined: iota
  • 每次 const 出现时,都会让 iota 初始化为0
  • 如果是同一行,值都一样

代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package main
import "fmt"
func main() {
    //普通枚举
    const (
        cpp    = 0
        java   = 1
        python = 2
    )
    fmt.Printf("cpp=%d  java=%d  python=%d\n", cpp, java, python) //a=0  b=1  c=2
    //1.iota只能在常量的表达式中使用
    //fmt.Println(iota)  //undefined: iota
    //2.它默认开始值是0,const中每增加一行加1
    const (
        a = iota //0
        b        //1
        c        //2
    )
    fmt.Printf("a=%d  b=%d  c=%d\n", a, b, c) //a=0  b=1  c=2
    //3.每次 const 出现时,都会让 iota 初始化为0
    const d = iota // a=0
    const (
        e = iota //b=0
        f        //c=1
    )
    fmt.Printf("d=%d  e=%d  f=%d\n", d, e, f) //d=0  e=0  f=1
    //4.如果中断iota,必须显式恢复!!!
    const (
        Low = iota //0
        Medium //1
        High = 100 //100
        Super //100
        Band = iota //4
    )
    //Low=0  Medium=1  High=100  Super=100  Band=4
    fmt.Printf("Low=%d  Medium=%d  High=%d  Super=%d  Band=%d\n", Low, Medium, High, Super, Band)
    //5.如果是同一行,值都一样
    const (
        i          = iota
        j1, j2, j3 = iota, iota, iota
        k          = iota
    )
    //i=0  j1=1  j2=1  j3=1  k=2
    fmt.Printf("i=%d  j1=%d  j2=%d  j3=%d  k=%d\n", i, j1, j2, j3, k)
    //6.可跳过的值
    const (
        k1 = iota // 0
        k2        // 1
        _         //2
        _         //3
        k3        // 4
    )
    //  k1=0  k2=1  k3=4
    fmt.Printf("k1=%d  k2=%d  k3=%d \n", k1, k2, k3)
    //7.中间插入一个值
    const (
        Sun = iota //Sun = 0
        Mon        // Mon = 1
        Tue = 7    //7
        Thu = iota // 3
        Fri        //4
    )
    //Sun=0  Mon=1  Tue=7  Thu=3  Fri=4
    fmt.Printf("Sun=%d  Mon=%d  Tue=%d  Thu=%d  Fri=%d\n", Sun, Mon, Tue, Thu, Fri)
 
}

以上就是Go语言基础枚举的用法及示例详解的详细内容,更多关于Go语言枚举的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/guofeng93/article/details/90766400

延伸 · 阅读

精彩推荐
  • Golanggo日志系统logrus显示文件和行号的操作

    go日志系统logrus显示文件和行号的操作

    这篇文章主要介绍了go日志系统logrus显示文件和行号的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    SmallQinYan12302021-02-02
  • Golanggolang 通过ssh代理连接mysql的操作

    golang 通过ssh代理连接mysql的操作

    这篇文章主要介绍了golang 通过ssh代理连接mysql的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    a165861639710342021-03-08
  • Golanggolang json.Marshal 特殊html字符被转义的解决方法

    golang json.Marshal 特殊html字符被转义的解决方法

    今天小编就为大家分享一篇golang json.Marshal 特殊html字符被转义的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    李浩的life12792020-05-27
  • Golanggo语言制作端口扫描器

    go语言制作端口扫描器

    本文给大家分享的是使用go语言编写的TCP端口扫描器,可以选择IP范围,扫描的端口,以及多线程,有需要的小伙伴可以参考下。 ...

    脚本之家3642020-04-25
  • GolangGolang中Bit数组的实现方式

    Golang中Bit数组的实现方式

    这篇文章主要介绍了Golang中Bit数组的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    天易独尊11682021-06-09
  • GolangGolang通脉之数据类型详情

    Golang通脉之数据类型详情

    这篇文章主要介绍了Golang通脉之数据类型,在编程语言中标识符就是定义的具有某种意义的词,比如变量名、常量名、函数名等等,Go语言中标识符允许由...

    4272021-11-24
  • Golanggolang的httpserver优雅重启方法详解

    golang的httpserver优雅重启方法详解

    这篇文章主要给大家介绍了关于golang的httpserver优雅重启的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    helight2992020-05-14
  • Golanggolang如何使用struct的tag属性的详细介绍

    golang如何使用struct的tag属性的详细介绍

    这篇文章主要介绍了golang如何使用struct的tag属性的详细介绍,从例子说起,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看...

    Go语言中文网11352020-05-21