Go语言常量(3)|Go主题月

257 阅读2分钟

常量说明

Go语言常量用的比较少,但还是值得一说,补充一下常量没有说明白的地方吧。 变量就是可以改变的数,没有固定的值,常量就是在不会修改的值,定义常量的数值在编译阶段就已经确定了,运行时不能够修改,在Go语言中常量的数据类型可以是布尔型,数字类型和字符串类型,数字类型包括整数类型,浮点数类型,复数,常量的定义的关键字为:const ,使用const来定义常量跟Javascipt ES6的用法一样,一旦定义就不能允许修改。
最基础的采用const定义常量方法:

const s1 string = "hello"

还可以使用类似定义变量的方式让编译器决定常量的数据类型的方法:

const s2 = "world"

也可以同时声明多个常量

const s3,s4 = "hello","world"

还可以用括号定义多个常量

const(
    s5 = "hello"
    s6 = "world"
)

常量在日常开发工作中很少会遇到,但是Go语言中支持一种特殊的常量方式:iota,这是Go语言的一个独特的语法糖。当iota和const一起用的时候,随着每一个常量的增加,iota也会随着常量的个数加1,只能作用在const常量声明里 简单用法:

const a = iota //此时iota的值为 0 
const (
    b = iota //此时iota的值为 0, const 再次出现的时候,都会让 iota 初始化为0,定义下一个常量才会加1 
    c  // 此时iota的值为 1 iota的值自动赋值给c
    d  // 此时d的值为 2 iota的值自动赋值给d
)

从上面的例子可以看出iota也可以叫做常量计数器,记录从iota出现开始,记录定义常量的个数。还可以用乘法*来实现一些高级的用法,比如实现一个等差数列:

   const (
    	a = iota*2 //此时iota的值为 0, 乘2也等于0
        b  // 此时b的值为 21*2=2,iota的值自动赋值给c
        c  // 此时c的值为 42*2=4 iota的值自动赋值给d
        d // 此时d的值为 62*2=4 iota的值自动赋值给d
    )

突发奇想,实现一个自然数的完全平方数的数列:

const (
    a = iota*iota //此时iota的值为 0, 乘2也等于0
    b  // 此时b的值为 11*1=2,iota的值自动赋值给c
    c  // 此时c的值为 42*2=4 iota的值自动赋值给d
    d // 此时d的值为 93*3=4 iota的值自动赋值给d
    )

总结

常量可以用len(), cap()等内置函数来计算常量的长度和容量等信息,到此常量的日常使用方法讲解完毕了,你懂了没呢?