为了账号安全,请及时绑定邮箱和手机立即绑定

yaml:解组错误:无法将字符串解组为时间。Golang中的持续时间

yaml:解组错误:无法将字符串解组为时间。Golang中的持续时间

Go
MMMHUHU 2021-04-09 16:15:12
我有如下结构:type Connect struct {     ClientID string `yaml:"clientid"`     Password string `yaml:"password"`     Timeout  time.Duration `yaml:"timeout"`}c1 := `    id: 'client1'    password: 'hhhhhhha'    timeout: 10    `c2 := `    id: 'client2'    password: 'llllllla'    timeout: '10'    `c3 := `    id: 'client3'    password: 'hhhhhhha'    timeout: 10s    `c4 := `    id: 'client4'    password: 'llllllla'    timeout: '10s'    `如上所示,Timeout的类型为time.Duration,默认单位为纳秒,但我想得到结果:c1 && c2有错误,c3 && c4有效(Timeout的配置必须具有unit)。如何为yaml重写UnmarshalYAML()方法?非常感谢。
查看完整描述

3 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

一种方法是为Timeout实现Unmarshaler接口的自定义类型创建一个方法,如果您不能使用以下UnmarshalYAML方法实现该功能Connect:


type Connect struct {

     ClientID string `yaml:"clientid"`

     Password string `yaml:"password"`

     Timeout  UnmarshalingTimeout `yaml:"timeout"`

}


type UnmarshalingTimeout time.Duration 


func (ut UnmarshalingTimeout) UnmarshalYAML(unmarshal func(interface{}) error) error {

    // implement unmarshaling here

}


查看完整回答
反对 回复 2021-04-19
  • 3 回答
  • 0 关注
  • 501 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信