Go语言常量

it2022-05-05  135

Go语言常量

常量是一个简单的标识符,在程序运行时,不会被修改的量。

常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

常量的定义格式:

const identifier [type] = value

 

可以省略类型说明符[type],因为编译器可以根据变量的值来推断其类型。

显示类型定义:const b string = "abc"隐士类型定义:const b = "abc"

 

多个相同类型的声明可以简写为:

const c_name1, c_name2 = value1, value2

 

实例:

package main import "fmt" func main(){ const LENGTH int = 10 const WIDTH int = 5 var area int var a, b, c = 1, flase, "str" //多重赋值 area = LENGTH * WIDTH fmt.Printf("面积为:%d", area) println() println(a, b, c) }

 

以上实例运行结果为:

面积为:50

1 false str

 

常量还可以用作枚举:

const( Unknown = 0 Female = 1 Male = 2 )

数字0、1和2分别代表未知性别、女性和男性。

常量还可以用len() ,cap(),unsafe.Sizeof() 函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过:

实例:

package main import "fmt" const( a = "abc" b = lan(a) c = unsafe.Sizeof(a) ) func main(){ println(a, b, c) }

以上实例运行结果为:

abc 3 16

 

iota

iota,特殊常量,可以认为是一个被编译器修改的常量。

iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。

iota可以被用作枚举值:

const( a = iota b = iota c = iota )

第一个iota等于0,每行iota在新的一行被使用时,它的值都会自动加1;所以a = 0, b = 1, c = 2可以简写为如下形式:

const( a = iota b c )

 

iota用法

实例:

package main import "fmt" func main(){ const( a = iota b c d = "ha" e f = 100 g h = iota i ) fmt.Println(a, b, c, d, e, f, g, h, i) }

以上实例运行结果为:

0  1  2  ha  ha  100  100  7  8

ioat实例:

package main import "fmt" const( i = 1<<iota j = 3<<iota k l ) func main(){ fmt.Println("i=",i) fmt.Println("j=",j) fmt.Println("k=",k) fmt.Println("l=",l) }

以上实例运行结果为:

i= 1

j= 6

k= 12

l= 24

iota表示从0开始自动加1,所以i = 1<<0, j = 3<<1(<<表示左移),即:i = 1,j = 6,关键在 k = 3<<2 , l = 3<<3

简单表述:

i = 1:左移0位,不变仍未1;

j = 3:左移1位,变为二进制110,即6;k = 3:左移2位,变为二进制1100,即12;l = 3:左移3位,变为二进制11000,即24。

转载于:https://www.cnblogs.com/Tomorrow-will-be-better/p/11204835.html


最新回复(0)