【Golang 基础系列九】Go 语言的枚举
概述
将变量的值一一列举出来,变量只限于列举出来的值的范围内取值
Go语言中没有枚举这种数据类型的,但是可以使用const配合iota模式来实现
一、普通枚举
const (cpp = 0java = 1python = 2golang = 3
)
二、自增枚举
iota只能在常量的表达式中使用
fmt.Println(iota) //undefined: iota
它默认开始值是0,const中每增加一行加1
const (a = iota //0c //1d //2)
每次 const 出现时,都会让 iota 初始化为0
const d = iota // a=0 const (e = iota //b=0f //c=1 )
如果中断iota,必须显式恢复!!!
const ( Low = iota //0Medium //1High = 100 //100Super //100Band = iota //4)
如果是同一行,值都一样
const ( i = iota j1, j2, j3 = iota, iota, iota k = iota )
可跳过的值
const (k1 = iota // 0k2 // 1_ //2_ //3k3 // 4)
中间插入一个值
const (Sun = iota //Sun = 0Mon // Mon = 1Tue = 7 //7Thu = iota // 3Fri //4 )
三、注意:
- iota 必须配合const 使用,否则undefined: iota
- 每次 const 出现时,都会让 iota 初始化为0
- 如果是同一行,值都一样
四、代码
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 语言的枚举相关推荐
- 视频教程-桫哥-GOlang基础-02函数-Go语言
桫哥-GOlang基础-02函数 多年互联网从业经验: 有丰富的的企业网站.手游.APP开发经验: 曾担任上海益盟软件技术股份有限公司项目经理及产品经理: 参与项目有益盟私募工厂.睿妙影音家庭物联网设 ...
- Golang 入门系列(九) 如何读取YAML,JSON,INI等配置文件...
实际项目中,读取相关的系统配置文件是很常见的事情.今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的. 1. json使用 JSON 应该比较熟悉,它是一种轻量级的数据交换 ...
- golang基础1-3:GO语言基本数据类型
GO语言基本数据类型 1. 介绍 在 Go 编程语言中,数据类型用于声明函数和变量. 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用 ...
- Golang 基础知识(九.func函数)
文章目录 1.定义 2.可变参数 3.多个返回值 4.返回值命名 5.作用域 6.函数类型与变量 7.函数类型变量 8.函数作为参数 9.函数作为返回值 10.匿名函数 11.闭包 12.defer ...
- 【C语言基础系列】C语言循环结构
写在前面:学习的第一门语言是Java,之前对C也了解一点,也只是了解一点,在加上长时间没有接触了,基本就只会一个Hello World了.现在由于准备升本考试,不得不从头开始学C.这里从零开始,记录C ...
- Golang基础知识点整理
Golang基础知识点整理 Go语言strconv包实现字符串和数值类型的相互转换 1 Slice 1.1 定义 1.2 切片的底层原理 1.3 切片的创建方式 1.3.1 从已有的数组或切片生成新的 ...
- winform point数组带数值_带你学够浪:Go语言基础系列 - 8分钟学复合类型
对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握.基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Gol ...
- 零基础玩转C语言系列第一章——初始C语言(上)
目录 一.如何学好C语言? 1.鼓励你,为你叫好. 2.挤时间学习 3.学好编程,不仅仅是学好C语言 二.初始C语言 本章目标 本章重点 1.什么是C语言? 2.第一个C语言程序 3.数据类型 4.变 ...
- Go语言学习笔记—golang基础语法
视频来源:B站<golang入门到项目实战 [2022最新Go语言教程,没有废话,纯干货!]> 文章为自己整理的学习笔记,侵权即删,谢谢支持! 文章目录 golang基础语法 一.gola ...
最新文章
- SpringBoot打包部署到环境
- 【数据结构练习习题】java实现版(一)
- 【软件工程】用例间的关系
- Ansible 学习总结(2)—— Ansible playbook 入门详解
- 如何应对训练的神经网络不工作?
- 计算机的创新产品,这几种电脑创新功能 空有喝彩没人买
- 自定义TxT文档下载
- 长短时记忆网络(LSTM)负荷预测项目(matlab)
- 扫描dir目录函数之scandir()
- 高等教育心理学:知识的学习
- Concurnas语言利用JVM开发高性能应用程序
- python猪脸识别_没想到,这是一家AI公司
- 罗技CSGO压枪宏文件
- 基于反馈技术的宽带低噪声放大器的设计
- 华为存储s2600t配置上架
- 安卓文字绘制和歌词器的简单实现
- 紫光云数(新华三)面试经历(垃圾)
- linux32位操作系统支持大内存
- 数据结构课程设计——中国计算机设计大赛赛事统计
- windows系统关闭共享文件的三种方式
热门文章
- 漫画汉化组,不用手动抹掉原文了:开源AI一键擦除,还能修复背景
- poj 滑雪(DFS)||(DP+递归)
- 苏宁易购2019上半年业绩大增背后:已完成全场景零售布局,家电领跑全渠道
- Node使用multiparty包上传文件
- python selenium截图_利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)...
- idea调试怎么跳出循环_Idea调试技巧
- Matplotlib绘图py:151: UserWarning: Glyph 27773 missing from current font.
- win10查看端口号是否被占用及解除占用的常用命令
- 买房八大技巧 自住者应该“买跌不买涨”
- 年度重磅!《2022华为开发者宝典》多元生态技术精选,学练考一站式能力进阶