概述

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

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

一、普通枚举

const (cpp = 0java = 1python = 2golang = 3
)

二、自增枚举

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

    fmt.Println(iota)  //undefined: iota
    
  2. 它默认开始值是0,const中每增加一行加1

    const (a = iota  //0c         //1d         //2)
    
  3. 每次 const 出现时,都会让 iota 初始化为0

    const d = iota    // a=0
    const (e = iota     //b=0f            //c=1
    )
    
  4. 如果中断iota,必须显式恢复!!!

    const ( Low = iota    //0Medium        //1High = 100   //100Super        //100Band = iota  //4)
    
  5. 如果是同一行,值都一样

    const (
    i          = iota
    j1, j2, j3 = iota, iota, iota
    k          = iota
    )
    
  6. 可跳过的值

    const (k1 = iota // 0k2        // 1_         //2_         //3k3       // 4)
    
  7. 中间插入一个值

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

三、注意:

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

四、代码

package mainimport "fmt"func main() {//普通枚举const (cpp    = 0java   = 1python = 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中每增加一行加1const (a = iota //0b        //1c        //2)fmt.Printf("a=%d  b=%d  c=%d\n", a, b, c) //a=0  b=1  c=2//3.每次 const 出现时,都会让 iota 初始化为0const d = iota // a=0const (e = iota //b=0f        //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 //0Medium //1High = 100 //100Super //100Band = iota //4)//Low=0  Medium=1  High=100  Super=100  Band=4fmt.Printf("Low=%d  Medium=%d  High=%d  Super=%d  Band=%d\n", Low, Medium, High, Super, Band)//5.如果是同一行,值都一样const (i          = iotaj1, j2, j3 = iota, iota, iotak          = iota)//i=0  j1=1  j2=1  j3=1  k=2fmt.Printf("i=%d  j1=%d  j2=%d  j3=%d  k=%d\n", i, j1, j2, j3, k)//6.可跳过的值const (k1 = iota // 0k2        // 1_         //2_         //3k3        // 4)//    k1=0  k2=1  k3=4fmt.Printf("k1=%d  k2=%d  k3=%d \n", k1, k2, k3)//7.中间插入一个值const (Sun = iota //Sun = 0Mon        // Mon = 1Tue = 7    //7Thu = iota // 3Fri        //4)//Sun=0  Mon=1  Tue=7  Thu=3  Fri=4fmt.Printf("Sun=%d  Mon=%d  Tue=%d  Thu=%d  Fri=%d\n", Sun, Mon, Tue, Thu, Fri)}

【Golang 基础系列九】Go 语言的枚举相关推荐

  1. 视频教程-桫哥-GOlang基础-02函数-Go语言

    桫哥-GOlang基础-02函数 多年互联网从业经验: 有丰富的的企业网站.手游.APP开发经验: 曾担任上海益盟软件技术股份有限公司项目经理及产品经理: 参与项目有益盟私募工厂.睿妙影音家庭物联网设 ...

  2. Golang 入门系列(九) 如何读取YAML,JSON,INI等配置文件...

    实际项目中,读取相关的系统配置文件是很常见的事情.今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的. 1. json使用 JSON 应该比较熟悉,它是一种轻量级的数据交换 ...

  3. golang基础1-3:GO语言基本数据类型

    GO语言基本数据类型 1. 介绍 在 Go 编程语言中,数据类型用于声明函数和变量. 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用 ...

  4. Golang 基础知识(九.func函数)

    文章目录 1.定义 2.可变参数 3.多个返回值 4.返回值命名 5.作用域 6.函数类型与变量 7.函数类型变量 8.函数作为参数 9.函数作为返回值 10.匿名函数 11.闭包 12.defer ...

  5. 【C语言基础系列】C语言循环结构

    写在前面:学习的第一门语言是Java,之前对C也了解一点,也只是了解一点,在加上长时间没有接触了,基本就只会一个Hello World了.现在由于准备升本考试,不得不从头开始学C.这里从零开始,记录C ...

  6. Golang基础知识点整理

    Golang基础知识点整理 Go语言strconv包实现字符串和数值类型的相互转换 1 Slice 1.1 定义 1.2 切片的底层原理 1.3 切片的创建方式 1.3.1 从已有的数组或切片生成新的 ...

  7. winform point数组带数值_带你学够浪:Go语言基础系列 - 8分钟学复合类型

    对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握.基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Gol ...

  8. 零基础玩转C语言系列第一章——初始C语言(上)

    目录 一.如何学好C语言? 1.鼓励你,为你叫好. 2.挤时间学习 3.学好编程,不仅仅是学好C语言 二.初始C语言 本章目标 本章重点 1.什么是C语言? 2.第一个C语言程序 3.数据类型 4.变 ...

  9. Go语言学习笔记—golang基础语法

    视频来源:B站<golang入门到项目实战 [2022最新Go语言教程,没有废话,纯干货!]> 文章为自己整理的学习笔记,侵权即删,谢谢支持! 文章目录 golang基础语法 一.gola ...

最新文章

  1. SpringBoot打包部署到环境
  2. 【数据结构练习习题】java实现版(一)
  3. 【软件工程】用例间的关系
  4. Ansible 学习总结(2)—— Ansible playbook 入门详解
  5. 如何应对训练的神经网络不工作?
  6. 计算机的创新产品,这几种电脑创新功能 空有喝彩没人买
  7. 自定义TxT文档下载
  8. 长短时记忆网络(LSTM)负荷预测项目(matlab)
  9. 扫描dir目录函数之scandir()
  10. 高等教育心理学:知识的学习
  11. Concurnas语言利用JVM开发高性能应用程序
  12. python猪脸识别_没想到,这是一家AI公司
  13. 罗技CSGO压枪宏文件
  14. 基于反馈技术的宽带低噪声放大器的设计
  15. 华为存储s2600t配置上架
  16. 安卓文字绘制和歌词器的简单实现
  17. 紫光云数(新华三)面试经历(垃圾)
  18. linux32位操作系统支持大内存
  19. 数据结构课程设计——中国计算机设计大赛赛事统计
  20. windows系统关闭共享文件的三种方式

热门文章

  1. 漫画汉化组,不用手动抹掉原文了:开源AI一键擦除,还能修复背景
  2. poj 滑雪(DFS)||(DP+递归)
  3. 苏宁易购2019上半年业绩大增背后:已完成全场景零售布局,家电领跑全渠道
  4. Node使用multiparty包上传文件
  5. python selenium截图_利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)...
  6. idea调试怎么跳出循环_Idea调试技巧
  7. Matplotlib绘图py:151: UserWarning: Glyph 27773 missing from current font.
  8. win10查看端口号是否被占用及解除占用的常用命令
  9. 买房八大技巧 自住者应该“买跌不买涨”
  10. 年度重磅!《2022华为开发者宝典》多元生态技术精选,学练考一站式能力进阶