常量

定义常量

const关键字定义常量

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

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

1. module mymodule

3. //公共常量,可以全局使用
4. pub const (
5. p_my_const     = 'abc' //注意是=号,而不是:=
6. p_my_int_const = 123
7. )

9. //模块常量,只能在模块内部使用
10. const (
11. my_const     = 'abc'
12. my_int_const = 123
13. )

15. //也可以定义单个常量
16. const pi = 3.14
17. pub const single_const = 'abc'

19. fn my_fn() {
20. //不能在函数内部定义常量
21. }

常量类型

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

1. module main

3. struct Color {
4. r int
5. g int
6. b int
7. }

9. pub fn (c Color) str() string {
10. return '{$c.r, $c.g, $c.b}'
11. }

13. fn rgb(r int, g int, b int) Color {
14. return Color{
15. r: r
16. g: g
17. b: b
18. }
19. }

21. const (
22. numbers = [1, 2, 3] // 数组
23. red     = Color{
24. r: 255
25. g: 0
26. b: 0
27. } // 结构体类型
28. blue    = rgb(0, 0, 255) // 函数调用返回的结果,作为常量的值
29. )

31. fn main() {
32. println(numbers)
33. println(red)
34. println(blue)
35. }

常量名规则

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

1. module main

3. const (
4. PI         = 3.14 //警告
5. Version    = '1.1.1' //警告
6. num        = 3
7. built_mode = 'mode'
8. )

10. fn main() {
11. println(PI)
12. println(num)
13. println(built_mode)
14. println(Version)
15. }