本文整理汇总了Golang中limbo/services/protobuf/protoc-gen-gogo/generator.Descriptor.GetOptions方法的典型用法代码示例。如果您正苦于以下问题:Golang Descriptor.GetOptions方法的具体用法?Golang Descriptor.GetOptions怎么用?Golang Descriptor.GetOptions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类limbo/services/protobuf/protoc-gen-gogo/generator.Descriptor
的用法示例。
在下文中一共展示了Descriptor.GetOptions方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: generateValidator
func (g *validation) generateValidator(file *generator.FileDescriptor, msg *generator.Descriptor) {
if msg.GetOptions().GetMapEntry() {
return
}
g.P(`func (msg *`, g.gen.TypeName(msg), `) Validate() error {`)
var patterns = map[string]string{}
for idx, field := range msg.Field {
if field.OneofIndex != nil {
continue
}
fieldName := "msg." + g.gen.GetFieldName(msg, field)
g.generateTests(msg, field, fieldName, idx, patterns)
}
for oneofIdx, oneof := range msg.OneofDecl {
g.P(`switch c := msg.Get`, generator.CamelCase(oneof.GetName()), `().(type) {`)
for idx, field := range msg.Field {
if field.OneofIndex == nil {
continue
}
if *field.OneofIndex != int32(oneofIdx) {
continue
}
g.P(`case *`, g.gen.OneOfTypeName(msg, field), `:`)
fieldName := "c." + g.gen.GetOneOfFieldName(msg, field)
g.generateTests(msg, field, fieldName, idx, patterns)
}
g.P(`}`)
}
g.P(`return nil`)
g.P(`}`)
g.P(``)
for name, pattern := range patterns {
g.P(`var `, name, ` = `, g.regexpPkg.Use(), `.MustCompile(`, strconv.Quote(pattern), `)`)
}
g.P(``)
}