使用constant关键字进行定义
常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
常量的定义格式:
const identifier [type] = value当然,也可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。
显式类型定义: const A string = "abc"隐式类型定义: const A = "abc"多个相同类型的声明可以简写为:
const c_name1, c_name2 = value1, value2
常量用作枚举:
const ( Unknown = 0 Female = 1 Male = 2 )常量还可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数
import "unsafe" const ( a = "abc" b = len(a) c = unsafe.Sizeof(a) # 字符串类型在 go 里是个结构, 包含指向底层数组的指针和长度,这两部分每部分都是 8 个字节,所以字符串类型大小为 16 个字节 ,即c=16 )
注意的地方
常量、常量表达式(所有数都为常量的运算)在编译时就被确定了值。对常量进行移位操作,则只能在运行时刻才能确定值,所以会发生异常。常量命名一般使用全大写的方式在定义常量组时,如果不提供初始值,则表示将使用上行的表达式,见下面代码 const ( a = 1 b c d ) func main() { fmt.Println(a) // b、c、d没有初始化,使用上一行(即a)的值 fmt.Println(b) // 输出1 fmt.Println(c) // 输出1 fmt.Println(d) // 输出1 }
go中的特殊常量,可以认为是一个可以被编译器修改的常量
iota 在 const 关键字出现时将被重置为0,const中每新增一行常量声明将使 iota 计数一次。
示例
第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2 可以简写为如下形式:
const ( a = iota b c )再来看一个更复杂的
const ( a = iota //0 b //1 c //2 d = "ha" //独立值,iota += 1 e //"ha" iota += 1 f = 100 //iota +=1 g //100 iota +=1 h = iota //7,恢复计数 i //8 )结果:
0 1 2 ha ha 100 100 7 8
如果对你有帮助,可否在文章右侧点个赞再走呢~~
本文为原创,转载请注明出处
文章目录
