本文整理汇总了Golang中github.com/goadesign/goa/design.DataStructure类的典型用法代码示例。如果您正苦于以下问题:Golang DataStructure类的具体用法?Golang DataStructure怎么用?Golang DataStructure使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DataStructure类的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: GoTypeDef
// GoTypeDef returns the Go code that defines a Go type which matches the data structure
// definition (the part that comes after `type foo`).
// tabs is the number of tab character(s) used to tabulate the definition however the first
// line is never indented.
// jsonTags controls whether to produce json tags.
// private controls whether the field is a pointer or not. All fields in the struct are
// pointers for a private struct.
func GoTypeDef(ds design.DataStructure, tabs int, jsonTags, private bool) string {
def := ds.Definition()
t := def.Type
switch actual := t.(type) {
case design.Primitive:
return GoTypeName(t, nil, tabs, private)
case *design.Array:
d := GoTypeDef(actual.ElemType, tabs, jsonTags, private)
if actual.ElemType.Type.IsObject() {
d = "*" + d
}
return "[]" + d
case *design.Hash:
keyDef := GoTypeDef(actual.KeyType, tabs, jsonTags, private)
if actual.KeyType.Type.IsObject() {
keyDef = "*" + keyDef
}
elemDef := GoTypeDef(actual.ElemType, tabs, jsonTags, private)
if actual.ElemType.Type.IsObject() {
elemDef = "*" + elemDef
}
return fmt.Sprintf("map[%s]%s", keyDef, elemDef)
case design.Object:
return goTypeDefObject(actual, def, tabs, jsonTags, private)
case *design.UserTypeDefinition:
return GoTypeName(actual, actual.AllRequired(), tabs, private)
case *design.MediaTypeDefinition:
return GoTypeName(actual, actual.AllRequired(), tabs, private)
default:
panic("goa bug: unknown data structure type")
}
}
开发者ID:konstantin-dzreev,项目名称:goa,代码行数:39,代码来源:types.go
示例2: GoTypeDef
// GoTypeDef returns the Go code that defines a Go type which matches the data structure
// definition (the part that comes after `type foo`).
// versioned indicates whether the type is being referenced from a version package (true) or the
// default package (false).
// tabs is the number of tab character(s) used to tabulate the definition however the first
// line is never indented.
// jsonTags controls whether to produce json tags.
func GoTypeDef(ds design.DataStructure, versioned bool, defPkg string, tabs int, jsonTags bool) string {
var buffer bytes.Buffer
def := ds.Definition()
t := def.Type
switch actual := t.(type) {
case design.Primitive:
return GoTypeName(t, nil, tabs)
case *design.Array:
d := GoTypeDef(actual.ElemType, versioned, defPkg, tabs, jsonTags)
if actual.ElemType.Type.IsObject() {
d = "*" + d
}
return "[]" + d
case *design.Hash:
keyDef := GoTypeDef(actual.KeyType, versioned, defPkg, tabs, jsonTags)
if actual.KeyType.Type.IsObject() {
keyDef = "*" + keyDef
}
elemDef := GoTypeDef(actual.ElemType, versioned, defPkg, tabs, jsonTags)
if actual.ElemType.Type.IsObject() {
elemDef = "*" + elemDef
}
return fmt.Sprintf("map[%s]%s", keyDef, elemDef)
case design.Object:
buffer.WriteString("struct {\n")
keys := make([]string, len(actual))
i := 0
for n := range actual {
keys[i] = n
i++
}
sort.Strings(keys)
for _, name := range keys {
WriteTabs(&buffer, tabs+1)
field := actual[name]
typedef := GoTypeDef(field, versioned, defPkg, tabs+1, jsonTags)
if field.Type.IsObject() || def.IsPrimitivePointer(name) {
typedef = "*" + typedef
}
fname := Goify(name, true)
var tags string
if jsonTags {
var omit string
if !def.IsRequired(name) {
omit = ",omitempty"
}
tags = fmt.Sprintf(" `json:\"%s%s\" xml:\"%s%s\"`", name, omit, name, omit)
}
desc := actual[name].Description
if desc != "" {
desc = fmt.Sprintf("// %s\n", desc)
}
buffer.WriteString(fmt.Sprintf("%s%s %s%s\n", desc, fname, typedef, tags))
}
WriteTabs(&buffer, tabs)
buffer.WriteString("}")
return buffer.String()
case *design.UserTypeDefinition:
return GoPackageTypeName(actual, actual.AllRequired(), versioned, defPkg, tabs)
case *design.MediaTypeDefinition:
return GoPackageTypeName(actual, actual.AllRequired(), versioned, defPkg, tabs)
default:
panic("goa bug: unknown data structure type")
}
}
开发者ID:RouGang,项目名称:goa,代码行数:72,代码来源:types.go
注:本文中的github.com/goadesign/goa/design.DataStructure类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论