概念

常量用于定义不可被修改的值,需要在编译过程中进行计算,只能是基础数据类型:布尔、 数值型、字符串。
使用 const 进行常量声明:const 常量名称 类型 = 值

常量初始化

指定数据类型

  1. // 演示常量声明 & 使用(指定数据类型)
  2. package main
  3. import (
  4. "fmt"
  5. )
  6. func main () {
  7. const a int = 123
  8. const b float64 = 3.14
  9. const c string = "isconst"
  10. const d bool = true
  11. fmt.Println("a =",a ,"b =",b ,"c =",c ,"d =", d)
  12. }

类型推导

声明时,不指定数据类型,而是让编译器通过常量的值进行类型推导

  1. // 演示通过类型推导申明常量
  2. package main
  3. import (
  4. "fmt"
  5. )
  6. func main () {
  7. const a = 123
  8. const b = 3.14
  9. const c = "isconst"
  10. const d = true
  11. fmt.Printf("a 的数据类型是%T\n",a)
  12. fmt.Printf("b 的数据类型是%T\n",b)
  13. fmt.Printf("c 的数据类型是%T\n",c)
  14. fmt.Printf("d 的数据类型是%T\n",d)
  15. }
  16. /*
  17. 代码运行结果展示
  18. a 的数据类型是int
  19. b 的数据类型是float64
  20. c 的数据类型是string
  21. d 的数据类型是bool
  22. */

批量声明

  1. // 演示批量声明常量
  2. package main
  3. import (
  4. "fmt"
  5. )
  6. func main (){
  7. const (
  8. a = 123
  9. b = 3.14
  10. c = "isconst"
  11. d = true
  12. )
  13. fmt.Println(a, b, c, d)
  14. }

省略常量值

const同时声明多个常量时,如果省略了值, 则表示和上面一行的值相同

  1. // 演示批量声明常量并省略常量值
  2. package main
  3. import (
  4. "fmt"
  5. )
  6. func main (){
  7. const (
  8. a = 123
  9. b
  10. c
  11. d
  12. )
  13. fmt.Println("a =", a, "\nb =", b, "\nc =", c, "\nd =", d)
  14. }
  15. /*
  16. 代码运行结果展示
  17. a = 123
  18. b = 123
  19. c = 123
  20. d = 123
  21. */

“枚举” iota

GO中没有枚举变量,但是可以通过 const + iota 实现同样的功能
iota是Go语言中的常量计数器,只能在常量表达式中使用。 iota在const关键字出现时将被重置为0。
const中每新增一行常量声明将使iota计数一次。 使用iota能简化定义。
iota 的初始值为0,后续每次加1

  1. // 演示通过const + iota 实现枚举功能
  2. // 要求定义常量 a、b、c、d 分别为 1、2、3、4
  3. package main
  4. import (
  5. "fmt"
  6. )
  7. func main(){
  8. const(
  9. a = 1 + iota
  10. b
  11. c
  12. d
  13. )
  14. // 相当于a、b、c、d 都等于 1 + iota
  15. fmt.Println("a =", a, "\nb =", b, "\nc =", c, "\nd =", d)
  16. }
  17. /*
  18. 代码运行结果展示
  19. a = 1
  20. b = 2
  21. c = 3
  22. d = 4
  23. */