常量

定义常量

const关键字定义常量

默认是模块级常量,使用pub变为公共常量,可以被其他模块访问

常量只能在模块级别定义,不能在函数内部定义

  1. module mymodule
  2. //公共常量,可以全局使用
  3. pub const (
  4. p_my_const = 'abc' //注意是=号,而不是:=
  5. p_my_int_const = 123
  6. )
  7. //模块常量,只能在模块内部使用
  8. const (
  9. my_const = 'abc'
  10. my_int_const = 123
  11. )
  12. //也可以定义单个常量
  13. const pi = 3.14
  14. pub const single_const = 'abc'
  15. fn my_fn() {
  16. //不能在函数内部定义常量
  17. }

常量类型

跟其他语言不太一样,V语言的常量不仅可以是基本类型,也可以是数组,字典,枚举,结构体等复杂类型,甚至可以是函数调用的返回结果

  1. module main
  2. struct Color {
  3. r int
  4. g int
  5. b int
  6. }
  7. pub fn (c Color) str() string {
  8. return '{$c.r, $c.g, $c.b}'
  9. }
  10. fn rgb(r int, g int, b int) Color {
  11. return Color{
  12. r: r
  13. g: g
  14. b: b
  15. }
  16. }
  17. const (
  18. numbers = [1, 2, 3] // 数组
  19. red = Color{
  20. r: 255
  21. g: 0
  22. b: 0
  23. } // 结构体类型
  24. blue = rgb(0, 0, 255) // 函数调用返回的结果,作为常量的值
  25. )
  26. fn main() {
  27. println(numbers)
  28. println(red)
  29. println(blue)
  30. }

常量名规则

跟其他语言不太一样,V语言常量名强制约定:小蛇式命名风格(lower snake case),即全小写或小写加下划线,跟变量,函数的命名风格一致.

  1. module main
  2. const (
  3. PI = 3.14 //警告
  4. Version = '1.1.1' //警告
  5. num = 3
  6. built_mode = 'mode'
  7. )
  8. fn main() {
  9. println(PI)
  10. println(num)
  11. println(built_mode)
  12. println(Version)
  13. }