当前位置: 首页>>代码示例>>Golang>>正文


Golang Descriptor.GetOptions方法代码示例

本文整理汇总了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(``)
}
开发者ID:limbo-services,项目名称:core,代码行数:44,代码来源:validation.go


注:本文中的limbo/services/protobuf/protoc-gen-gogo/generator.Descriptor.GetOptions方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。