联合体

跟C的联合体类型用法完全一致,联合体的定义方式跟结构体是一样的,

只是把关键字struct改为union,不过在V语言中比较少用到.

联合体定义

1. union MyAnything {
2. mut:
3. bytes [10]byte
4. xu64  u64
5. xu32  u32
6. xu16  u16
7. xint  int
8. }

10. fn main() {
11. mut x := MyAnything{}
12. x.xint = 1234
13. for i, b in x.bytes {
14. println('x.bytes[$i]: $b.hex()')
15. }
16. }

联合体方法

可以像结构体那样,给联合体添加方法

1. union MyAnything {
2. mut:
3. bytes [10]byte
4. xu64  u64
5. xu32  u32
6. xu16  u16
7. xint  int
8. }

10. pub fn (m MyAnything) str() string {
11. return 'from union'
12. }

14. fn main() {
15. mut x := MyAnything{}
16. x.xint = 1234
17. println(x.str())
18. }