在 proto 消息中声明一个字段标签
Declaring a field tag in proto message
我刚刚开始使用 protobuf 进行 Go 编程,现在我需要验证结构中的数据。我发现 govalidator,它似乎完美地满足了我的需要。它确实根据字段标签验证结构,比如
type Contact struct {
firstName string `valid:"alpha,required"`
lastName string `valid:"alpha,required"`
email string `valid:"email,required"`
}
jdoe := &Contact{
firstName: "John",
lastName: "Doe",
email: "jdoe@mail.com"
}
ok, err = govalidator.ValidateStruct(jdoe)
我的 protobuf 定义看起来像
message Contact {
string firstName = 1;
string lastName = 2;
string email = 3;
}
现在我的问题是,有没有办法在原型消息中定义字段标签。从我在生成的 go 代码中看到的情况来看,编译器无论如何都会向字段添加标签,但我可以 "sneak" 我也需要的标签吗?另外,我想解组可能是一种可能的解决方案,但对我来说,解组只是为了将字段值复制到具有必要字段标记的等效结构,这在某种程度上似乎效率低下。
具有相同的数据封装结构和来自客户端的输入纯属巧合。正如不仅在评论中建议的那样,而且在 protobuf 方面比我更有经验的同事也建议我刚刚将 proto 生成的结构中的字段映射(在这种特殊情况下为 1:1)到数据我定义的封装结构
我刚刚开始使用 protobuf 进行 Go 编程,现在我需要验证结构中的数据。我发现 govalidator,它似乎完美地满足了我的需要。它确实根据字段标签验证结构,比如
type Contact struct {
firstName string `valid:"alpha,required"`
lastName string `valid:"alpha,required"`
email string `valid:"email,required"`
}
jdoe := &Contact{
firstName: "John",
lastName: "Doe",
email: "jdoe@mail.com"
}
ok, err = govalidator.ValidateStruct(jdoe)
我的 protobuf 定义看起来像
message Contact {
string firstName = 1;
string lastName = 2;
string email = 3;
}
现在我的问题是,有没有办法在原型消息中定义字段标签。从我在生成的 go 代码中看到的情况来看,编译器无论如何都会向字段添加标签,但我可以 "sneak" 我也需要的标签吗?另外,我想解组可能是一种可能的解决方案,但对我来说,解组只是为了将字段值复制到具有必要字段标记的等效结构,这在某种程度上似乎效率低下。
具有相同的数据封装结构和来自客户端的输入纯属巧合。正如不仅在评论中建议的那样,而且在 protobuf 方面比我更有经验的同事也建议我刚刚将 proto 生成的结构中的字段映射(在这种特殊情况下为 1:1)到数据我定义的封装结构