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
