Golang的常量定义及使用案例
Golang的常量定义及使用案例
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.常量的定义
package main import ( "fmt" ) func main() { /* 什么是常量: 在程序运行过程中其值不可以发生改变的量称为常量。 比如游戏里的装备价格在整个程序运行中都是不允许发生改变的。 在golang中有两种定义变量的方式,分别为"常量赋值",“自动推导类型常量”。 1>.常量赋值语法格式: const 常量名称 数据类型 = 值 2>.自动推导类型常量语法格式(注意,常量赋值不要使用":="): const 常量名称 = 值 Go语言中使用常量注意事项: 1>.常量一经定义不可修改,比如再次赋值是不允许的; 2>.不可以获取常量的内存地址(在Go语言中在变量前使用"&"可以获取变量的内存地址); 3>.常量和变量在不同的内存存储区域: (1).常量存储在数据区(全局区)下面的常量区 (2)变量在栈区进行存储,但是在Go语言中将堆和栈进行统一管理,称为虚拟内存区域 4>.为了将常量和变量有所区分,一般实际开发中,我们建议会将常量的名称所有字母均大写; */ //常量赋值 const NAME string = "尹正杰" fmt.Printf("变量na0me的数据类型是:%T,其对应的值是:%s\n", NAME, NAME) //自动推导类型常量 const AGE = 18 fmt.Printf("变量age的数据类型是:%T,其对应的值是:%d\n", AGE, AGE) }
二.常量集(iota枚举)
1>.使用常量集的注意事项
常量声明可以使用iota常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都写一遍初始化表达式。 温馨提示: 1>.在同一个const声明常量集中,在第一个声明的常量所在的行,iota将会被赋值为0,然后在每一个有常量声明的行加1; 2>.在同一个常量集中,在同一行的iota的值相同; 3>.在同一个常量集中,可以自定义常量集中的值,但不推荐和iota常量生成器混用,容易搞不清楚iota的值是多少; 4>.如果不使用常量集,即单独定义常量,那iota的值都为0,定义常量集的好处就是在定义多个常量时不用每行都得写const关键字;
2>.使用iota常量生成器为常量集赋值案例
package main import ( "fmt" ) func main() { //在同一个常量集中,第一个iota等于0,每当iota在新的一行被使用时,它的值会自动加1 const ( A = iota B = iota C = iota ) fmt.Printf("A = %d\nB = %d\nC = %d\n\n", A, B, C) //在同一个常量集中,第一个iota等于0,每当iota在新的一行被使用时,它的值会自动加1,下面这种写法是上面写法的简写形式 const ( A1 = iota B1 C1 ) fmt.Printf("A1 = %d\nB1 = %d\nC1 = %d\n\n", A1, B1, C1) //在同一个常量集中,第一个iota等于0,每当iota在新的一行被使用时,它的值会自动加1,但是同一行的iota值是相同的哟~ const ( A2 = iota B2, C2 = iota, iota D2 = iota ) fmt.Printf("A2 = %d\nB2 = %d\nC2 = %d\nD2 = %d\n\n", A2, B2, C2, D2) }
3>.自定义常量集的值案例
package main import ( "fmt" ) func main() { const ( RED = 1 ORANGE = 2 YELLOW = 4 GREEN = 8 CYAN = 16 BLUE = 32 VIOLET = 64 ) fmt.Println("赤橙黄绿青蓝紫对应的标记为:", RED, ORANGE, YELLOW, GREEN, CYAN, BLUE, VIOLET) }
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。 欢迎加入基础架构自动化运维:598432640,大数据SRE进阶之路:959042252,DevOps进阶之路:526991186
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架