【问题标题】:Go template to struct去模板到结构
【发布时间】:2014-08-07 11:24:03
【问题描述】:

我有一个应该解析为结构的 Go 模板。如何将 bytes.Bufferresult 从模板执行函数转换回 structPlayground

package main

import (
    "bytes"
    "encoding/gob"
    "fmt"
    "log"
    "text/template"
)

type Data struct {
    Age      int
    Username string
    SubData  SubData
}
type SubData struct {
    Name string
}

func main() {
    s := SubData{Name: "J. Jr"}
    d := Data{Age: 26, Username: "HelloWorld", SubData: s}
    tmpl := "{{ .SubData }}"
    t := template.New("My template")
    t, _ = t.Parse(string(tmpl))
    buffer := new(bytes.Buffer)
    t.Execute(buffer, d)
    fmt.Println(buffer)

    // writing
    enc := gob.NewEncoder(buffer)
    err := enc.Encode(s)
    if err != nil {
        log.Fatal("encode error:", err)
    }

    // reading
    buffer = bytes.NewBuffer(buffer.Bytes())
    e := new(SubData)
    dec := gob.NewDecoder(buffer)
    err = dec.Decode(e)
    if err != nil {
        log.Fatal("decode error:", err)
    }
    fmt.Println(e, err)
}

【问题讨论】:

  • 这似乎完全像XY Problem。下面的 OP 评论强化了这种看法。

标签: go go-templates


【解决方案1】:

你不能。这显然是不可能的。

但是到底为什么会有人想做这样的事情呢?你为什么不直接通过 gob 发送你的Data 并直接解码呢?为什么要创建一个你喜欢的文本表示?

【讨论】:

  • 谢谢。我希望这是可能的。我正在尝试编写 JSON-Go 模板布局。所以我可以做{x:{i1:"1",i2:"2"},y:"{{ .X }}"}。这样y可以在解析JSON后在模板中引用X
  • @aminjam:那么,Go 模板对您来说完全是错误的工具。只需使用...一个结构。
猜你喜欢
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 2011-01-25
  • 2014-12-22
  • 2017-05-28
  • 1970-01-01
相关资源
最近更新 更多