假设我有以下 struct wherevalid用于验证每个验证器(特别是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"`
}
Run Code Online (Sandbox Code Playgroud)
添加了一些验证器后,行太长且无法维护。
我想拆分成新行,但不支持 go并且与reflect.StructTag.Get不兼容。
但是,根据我的测试,验证器可以使用多行结构标记,但 vet 失败。
简而言之,拆分长结构标签的正确方法是什么?
正如您所指出的,预期的约定StructTag.Get()不允许在结构标记中使用换行符(如果您不遵循约定,StructTag.Get()将无法正常工作)。在我看来,太多的东西被挤进一个标签值。
如果你想存储关于你的结构的那么多元信息,我会将它存储在结构标记之外,由其他结构正确建模,以便可以以类型安全的方式访问/处理它们。
如果您别无选择,并且确实需要将那么多信息放入单个标记中,那么您必须在使用 readyStructTag.Get()方法的便利性或省略约定之间进行选择,在结构标记中使用您想要的任何格式,以及只需实现您自己的标签解析逻辑。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           2044 次  |  
        
|   最近记录:  |