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

问题描述

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

 <d>
          <s>1</s>
          <co>
               <de>0</de>
          </co>
 </d>

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

<d>
      <s>2</s>
      <un>
        <dmi>0.0</dmi>
        <dma>50.0</dma>
        <reo>0</reo>
        <shake type_id="1">
          <max>200</max>
          <min>100</min>
          <cycle>60</cycle>
          <phase>0</phase>
        </shake>
      </un>
</d>

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

解决方案

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结构体便可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值