视频: https://www.bilibili.com/video/BV16p4y1n7tQ/

什么是常量

对比变量(variable)用于存储可变的数据常量(constant)用于存储固定不变的数据,比如:

"hello"
3.14
true

与变量声明类似,声明变量用关键词var,声明常量用关键词const

在变量声明各种形式的基础上,将var关键词换成const关键词,即可声明常量:

在Golang中,有两种常量,分别是:

  • 未定类常量(Untyped Constant)
  • 定类常量(Typed Constant)

下面一一介绍~

未定类常量

声明时未提供类型的常量就是未定类常量(Untyped Constant),比如:

未定类常量具有弹性(flexibility),在可兼容的类型之间转换无需显式转换

如果把const换成var将会报错:

math内置包里,声明了一组未定类常量:

定类常量

声明时提供类型的常量就是定类常量(Typed Constant),比如:

不同于未定类常量,定类常量在转换时必须显式转换,否则将会报错

上面的例子显示,不能将float64的定类常量pi赋值给float32的变量

常量与变量的不同点

  • 常量声明时必须赋值:

  • 常量不能重新赋值,因为常量的值是固定不变的(fixed):

  • 已声明的常量可以不使用,不同于变量一旦声明必须使用:

  • 短声明语法不能用来声明常量:

  • 常量的数据类型只能是基本数据类型的其中一种:
    • bool
    • string
    • int家族
    • float家族
    • complex家族

后面会学到一些类型(比如数组)不能声明为常量,但是如果有新类型是基于基本数据类型的也可以定义为常量:

声明一组常量的语法

定义一组常量非常简单,在math包里已经见过类似的例子:

其中a是未定类的布尔常量,其余都是定类常量,而且我们注意到b==cd==e,上面的例子可以简化成:

c和e都是定类常量,它们与上一行常量类型及数据保持一致

在定义常量组时,如果不提供初始值,则表示将使用上行的表达式,不妨试试:

总结

next time~ :D

原文地址: https://nbody1996.gitee.io/becoming_gopher/posts/008/

读后有收获可以请作者喝咖啡~