golang-常量

mac2026-04-02  2

常量

使用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 }

 

 

iota

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

 

如果对你有帮助,可否在文章右侧点个赞再走呢~~

 

本文为原创,转载请注明出处

 

文章目录

最新回复(0)