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 ", NAME, NAME) //自动推导类型常量 const AGE = 18 fmt.Printf("变量age的数据类型是:%T,其对应的值是:%d ", 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 B = %d C = %d ", A, B, C) //在同一个常量集中,第一个iota等于0,每当iota在新的一行被使用时,它的值会自动加1,下面这种写法是上面写法的简写形式 const ( A1 = iota B1 C1 ) fmt.Printf("A1 = %d B1 = %d C1 = %d ", A1, B1, C1) //在同一个常量集中,第一个iota等于0,每当iota在新的一行被使用时,它的值会自动加1,但是同一行的iota值是相同的哟~ const ( A2 = iota B2, C2 = iota, iota D2 = iota ) fmt.Printf("A2 = %d B2 = %d C2 = %d D2 = %d ", 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) }