Golang枚举类型的基础用法
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容主要讲解"Golang枚举类型的基础用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Golang枚举类型的基础用法"吧!基础工作为了下面讲解方便
千家信息网最后更新 2025年01月19日Golang枚举类型的基础用法
本篇内容主要讲解"Golang枚举类型的基础用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Golang枚举类型的基础用法"吧!
基础工作
为了下面讲解方便,这里使用 go modules 的方式先建立一个简单工程。
~/Projects/go/examples ➜ mkdir enum ~/Projects/go/examples ➜ cd enum ~/Projects/go/examples/enum ➜ go mod init enum go: creating new go.mod: module enum ~/Projects/go/examples/enum ➜ touch enum.go
const + iota
以 启动、运行中、停止 这三个状态为例,使用 const 关键来声明一系列的常量值。在 enum.go 中写上以下内容:
package main import "fmt" const ( Running int = iota Pending Stopped ) func main() { fmt.Println("State running: ", Running) fmt.Println("State pending: ", Pending) fmt.Println("State Stoped: ", Stopped) }
保存并运行,可以得到以下结果,
~/Projects/go/examples/enum ➜ go run enum.go State running: 0 State pending: 1 State Stoped: 2
在说明发生了什么之前,我们先看来一件东西,iota。相比于 c、java,go 中提供了一个常量计数器,iota,它使用在声明常量时为常量连续赋值。
比如这个例子,
const ( a int = iota // a = 0 b int = iota // b = 1 c int = iota // c = 2 ) const d int = iota // d = 0
在一个 const 声明块中,iota 的初始值为 0,每声明一个变量,自增 1。以上的代码可以简化成:
const ( a int = iota // a = 0 b // b = 1 c // c = 2 ) const d int = iota // d = 0
设想一下,如果此时有 50 或者 100 个常量数,在 c 和 java 语言中写出来会是什么情况。
关于 iota,有更多的具体的技巧(例如跳数),详细请看官方定义 iota。
通过使用 const 来定义一连串的常量,并借助 iota 常量计数器,来快速的为数值类型的常量连续赋值,非常方便。虽然没有了 enum 关键字,在这种情况下发现,是多余的,枚举本质上就是常量的组合。
当然,你可以使用以下方式,来更接近其它语言的 enum,
// enum.go ... type State int const ( Running State = iota Pending Stopped ) ...
把一组常量值,使用一个类型别名包裹起来,是不是更像其它语言中的 enum {} 定义了呢?
你还可以将上面的例子改为:
// enum.go ... type State int const ( Running State = iota Pending Stopped ) func (s State) String() string { switch s { case Running: return "Running" case Pending: return "Pending" case Stopped: return "Stopped" default: return "Unknown" } } ...
为定义的枚举类型加上 String 函数,运行结果如下:
~/Projects/go/examples/enum ➜ go run enum.go State running: Running State pending: Pending State Stoped: Stopped
到此,相信大家对"Golang枚举类型的基础用法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
常量
类型
基础
内容
语言
运行
例子
关键
情况
方式
更多
结果
计数器
学习
实用
更深
一连串
三个
东西
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
中职高三网络技术试卷
h3cr服务器橙色灯闪
我的世界赛文mod服务器
软件开发服务费开票内容
未来网络技术应用场景
中北大学网络安全实验室怎么样
大专学网络技术就业前景
口令服务器找到
华盛恒辉软件开发公司
数据库增量与全量复制
深圳所有的软件开发公司排名
东方云锦网络技术
网络安全知识回家多选
网络安全的教育目的
软件开发专业名称
网络安全利与弊观看视频
听相声软件开发
数据库管理可视化
武汉众乐商通网络技术靠谱吗
北京收银软件开发公司
服务器导轨价格
网络安全培训会领导讲话
无线传感器网络技术体系
服务器内有哪些
数据库基础b
手机充话费服务器异常是怎么回事
网络安全公需科目考试答案
网络技术工作室swot分析
aspenv11数据库修复
舟山工业软件开发需要学什么