【问题标题】:How to split long struct tags in golang?如何在golang中拆分长结构标签?
【发布时间】:2019-01-29 17:57:54
【问题描述】:

假设我有以下结构,其中valid 用于使用每个验证器的自定义消息验证结构(特别是govalidator)。

type Login struct {
  Email    string `json:"email" valid:"required~Email is required,email~The email address provided is not valid"`
  Password string `json:"password" valid:"required~Password is required,stringlength(6|40)~Password length must be between 6 and 40"`
}

添加几个验证器后,行太长,无法维护。

我想拆分成新行但not supported by goreflect.StructTag.Get 不兼容。

但是,根据我的测试,验证器可以使用多行结构标签,但 vet 失败。

短,拆分长结构标签的正确方法是什么?

【问题讨论】:

    标签: string go struct


    【解决方案1】:

    如您所述,StructTag.Get() 所期望的 约定 不允许在结构标记中使用换行符(如果您不遵守约定,StructTag.Get() 将无法正常工作)。在我看来,将太多东西挤进一个标签值中。

    如果您想存储关于结构的大量元信息,我会将其存储在结构标记之外,由其他结构正确建模,以便可以以类型安全的方式访问/处理它们。

    如果您别无选择,并且确实需要将这么多信息放入单个标签中,那么您必须在使用现成的StructTag.Get() 方法的便利性之间做出选择,或者省略约定,使用您想要的任何格式在结构标签中,并简单地实现你自己的标签解析逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-22
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      • 2019-03-03
      • 2015-02-14
      相关资源
      最近更新 更多