Go 用一个结构体生成不同的XML

问题描述

现在有个硬件,它的api Post传递的参数都是xml格式。我需要用go语言调用它的接口。xml格式如下:s=1时,表示是个常量,只需传de。

 
          1
          
               0
          
 

s=5时,表示需要抖动。XML格式是:


      2
      
        0.0
        50.0
        0
        
          200
          100
          60
          0
        
      

那怎么定义结构体实现使用一个结构体,可以解析出上面两种格式呢?

解决方案

type Delay struct {
	S     int           `xml:"s"`
	Co    *DelayConst   `xml:"co,omitempty"`
	Shake *ShakeStruct  `xml:"shake,omitempty"`
}

如上图定义便可,因为:

  • 如果字段的标签中包含 “omitempty” 选项, 那么在字段的值为空时, 这个字段将被忽略。 空值指的是 false , 0 ,为 nil 的指针、接口值、数组、切片、map ,以及长度为 0 的字符串

根据S的值去初始化delay结构体便可。

你可能感兴趣的:(go)