本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

常量

在Go语言中,常量是指编译期间就已知且不可改变的值。常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等。

一、字面常量(常量值)

所谓字面常量(literal),是指程序中硬编码的常量,如:

123 3.1415 // 浮点类型的常量 3.2+12i // 复数类型的常量 true // 布尔类型的常量 "foo" // 字符串常量

也就是说印刷厂刷钱,那个钱一刷出来就是一百块或者20块,它后面是改变不了这个值的,就算你使用了这个20块那么他还是20块,只是不在你这里了而已。常量的意思是不可改变的。

二、常量定义

const Pi float64 = 3.14 const zero = 0.0 // 浮点常量, 自动推导类型 const ( // 常量组 size int64 = 1024 eof = -1 // 整型常量, 自动推导类型 ) const u, v float32 = 0, 3 // u = 0.0, v = 3.0,常量的多重赋值 const a, b, c = 3, 4, "foo" // a = 3, b = 4, c = "foo" //err, 常量不能修改

只要是使用const修饰的变量都是不能修改的。

三、iota枚举

常量声明可以使用iota常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都写一遍初始化表达式。在一个const声明语句中,在第一个声明的常量所在的行,iota将会被置为0,后面每加新增一行,常量值会自动加1

const ( x = iota // x == 0 y = iota // y == 1 z = iota // z == 2 w // 这里隐式地说w = iota,因此w == 3。其实上面y和z可同样不用"= iota" ) const v = iota // 每遇到一个const关键字,iota就会重置,此时v == 0 const ( h, i, j = iota, iota, iota //h=0,i=0,j=0 iota在同一行值相同 ) const ( a = iota //a=0 b = "B" c = iota //c=2 d, e, f = iota, iota, iota //d=3,e=3,f=3 g = iota //g = 4 ) const ( x1 = iota * 10 // x1 == 0 y1 = iota * 10 // y1 == 10 z1 = iota * 10 // z1 == 20 )

也就是说:就像生孩子一样,跨一行就是比你早生一年,那你还是0岁,别人在你下面那行的就1岁,在你下面两行的就2岁,如果和你同一行的那就是和你同岁,他0岁你也0岁。

//大一年的例子: const ( x = iota // x == 0 y = iota // y == 1 z = iota // z == 2 w // 这里隐式地说w = iota,因此w == 3。其实上面y和z可同样不用"= iota" ) //同年的例子: const ( h, i, j = iota, iota, iota //h=0,i=0,j=0 iota在同一行值相同 )

1724人已阅读,今天你学习了吗?

2条回复
  • 老贾2023-03-20 01:50:00

    1

  • 40462021-04-07 10:22:33

    隐式赋值不仅限于iota

    (
       = = )
添加新回复