联合体

跟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. }
  9. fn main() {
  10. mut x := MyAnything{}
  11. x.xint = 1234
  12. for i, b in x.bytes {
  13. println('x.bytes[$i]: $b.hex()')
  14. }
  15. }

联合体方法

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

  1. union MyAnything {
  2. mut:
  3. bytes [10]byte
  4. xu64 u64
  5. xu32 u32
  6. xu16 u16
  7. xint int
  8. }
  9. pub fn (m MyAnything) str() string {
  10. return 'from union'
  11. }
  12. fn main() {
  13. mut x := MyAnything{}
  14. x.xint = 1234
  15. println(x.str())
  16. }