枚举的命名跟结构体命名一样,必须以大写字母开头;枚举项的名称跟函数命名一样,必须是小写加下划线

    也可以指定枚举值的值,枚举值也可以是负数

    1. blue = 2 //可以指定初始值
    2. green
    3. white
    4. black
    5. }
    6. enum Color3 {
    7. blue = -4 //初始值也可以是负数
    8. green
    9. white
    10. black
    11. }
    12. fn main() {
    13. mut c := Color2.green
    14. c = .blue
    15. println(c) //输出blue
    16. }

    枚举也可以像结构体那样添加方法

    1. red = 1
    2. green
    3. blue
    4. black
    5. white
    6. }
    7. fn (c Color) is_blue() bool { // 枚举方法
    8. return c == .blue
    9. }
    10. fn main() {
    11. b := Color.blue
    12. if b.is_blue() {
    13. println('yes')
    14. println(b)
    15. } else {
    16. println(b)
    17. }

    枚举类型和整数类型是可以相互转换的

    1. struct Abc {
    2. mut:
    3. flags []Flag
    4. }
    5. enum Flag {
    6. flag_one
    7. flag_two
    8. flag_three
    9. }
    10. fn main() {
    11. mut a := Abc{}
    12. a.flags << .flag_one
    13. a.flags << .flag_two
    14. a.flags << .flag_three
    15. println(a.flags)
    16. }

    ​ 可以像结构体和函数那样,给枚举添加自定义注解

    关于注解的进一步使用,可以参考