2

我有兴趣阅读模式(json 格式的文本文件)并将其解组为模式(为此我在 .GO 文件中定义了一些 JSON 结构),对于模式中的每种类型的结构,我想生成一个对应的 . go 文件,其中包含使用模板包 ( http://golang.org/pkg/text/template/ )执行 CRUD 操作的代码以生成这些文件。

架构文件中的结构示例 - {

type struct XYZ {
    Type         string                 `json:"type,omitempty"`
    ResourceType string                 `json:"resourceType,omitempty"`
    Links        map[string]string      `json:"links,omitempty"`

}

The text file has a JSON structured data which is something of this form -

{
        "type": "collection",
        "resourceType": "schema",
        "links": {
        "self": "…/v1/schemas",
        },
        "createTypes": { },
        "actions": { },
        "data": [ 86 items
        {
        "id": "schema",
        "type": "schema",
        "links": {
        "self": "/schemas/schema",
        "collection": "…/schemas",
        },
         ...

     }

}

有人可以帮助我如何使用 GO 模板包为不同的结构生成这些 CRUD 操作的代码。

4

1 回答 1

2

你可能会觉得go generate有用。


建议:去生成

为 Go 1.4 提出的新的 go tool 子命令。请参阅此线程中的设计文档和评论。

http://golang.org/s/go1.4-generate

-抢


去生成:一个提案

介绍

go build 命令自动构建 Go 程序,但有时需要进行初步处理,go build 不支持的处理。激励的例子包括:

  • yacc:从 yacc 语法 (.y) 文件生成 .go 文件
  • protobufs:从协议缓冲区定义(.proto)文件生成 .pb.go 文件
  • Unicode:从 UnicodeData.txt 生成表
  • HTML:将 .html 文件嵌入到 Go 源代码中
  • bindata:将二进制文件(例如 JPEG)转换为 Go 源中的字节数组

还有其他可以想象的处理步骤:

  • 字符串方法:为用作枚举常量的类型生成 String() 字符串方法
  • 宏:在给定通用包的情况下生成自定义实现,例如 sort.Ints from ints

该提议提供了一种用于这种处理的平滑自动化的设计。

于 2014-11-22T14:38:35.867 回答