Go语言 有没有办法将protobuf的数值字段限制在一定的范围内?

pn9klfpd  于 2023-11-14  发布在  Go
关注(0)|答案(1)|浏览(190)

假设我有一个protobuf消息,

message Person {
   uint32 age = 1;
}

字符串
有没有办法将字段age约束到某个范围内?比如[0; 120]。现在我只是通过编程进行这些检查

if p.Age < 0 || p.Age > 120 {
    return err
}


但是一次又一次地写同样的错误消息是很乏味的(实际上我有一个更大的消息)。在所有使用这个protobuf定义的项目中有相同的约束验证也很好-现在我们需要在开发人员之间非正式地协调它。

b5lpy0ml

b5lpy0ml1#

message Person {
   uint32 age = 1; [
       (buf.validate.field).uint32.gt = 0,
       (buf.validate.field).uint32.lt = 120,
   ];
}

字符串
您需要import "buf/validate/validate.proto"
请参阅https://github.com/bufbuild/protovalidate/blob/b0c0e8aaf81210677dd7e4d8b589bcf4ba110a04/proto/protovalidate/buf/validate/validate.proto#L960了解更多详情

相关问题