V语言

V语言学习笔记-05枚举

2020-05-19  本文已影响0人  lydiandy

定义枚举

枚举默认是模块内访问,通过pub关键字来定义公共枚举

pub enum Color {
    blue            //如果没有指定初始值,默认从0开始,然后往下递增1
    green
    white
    black
}
fn main() {
    mut c:=Color.green //第一次定义要使用:枚举名称.枚举值
    println(c) //目前只能输出枚举值1,还没有办法返回枚举值的名称

    c=.blue //第二次修改赋值,直接使用.枚举值就可以了
    println(c) //输出0
}

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

enum Color2 {
    blue =2 //可以指定初始值
    green
    white
    black
}
enum Color3 {
    blue =-4  //初始值也可以是负数
    green
    white
    black
}
fn main() {
    mut c:=Color.green
    println(c) //输出4

    c=.blue
    println(c) //输出3
}

也可以指定枚举的值为16进制

enum w_hex {
    a = 0x001 //枚举值也支持16进制
    b = 0x010
    c = 0x100
}
fn main() {
    println(w_hex.a) //输出1
    println(w_hex.b) //输出16
    println(w_hex.c) //输出256
}

枚举值的名称限制必须是小写加下划线

为枚举添加方法:

enum Color {
    red=1
    green
    blue
    black
    white
}

fn (c Color) is_blue() bool { //枚举方法
    return c==.blue 
}

fn main(){
    b:=Color.blue
    if b.is_blue() {
        println('yes')
        println(b)
    } else {
        println('no')
        println(b)
    }
}

枚举类型和整型可以相互转换:

i:=3 //推断为int
//println(i==.blue) //报错,类型不匹配
e:=Color(i) //转换为枚举类型
println(e==.blue) //输出true
ii:=int(e) //枚举类型转换为int
println(ii) //输出3
上一篇 下一篇

猜你喜欢

热点阅读