Go テンプレートにコンテンツを追加することに興味がありますが、テンプレートの特定のセクション内にあります。テンプレートには構造が定義されているため、テンプレートの実行時に新しいコンテンツを追加しようとすると、以前に実行されたテンプレート コンテンツに新しいコンテンツが追加されます。
テンプレートの例:
type Client struct {
Opts *ClientOpts
Schemas *Schemas
Types map[string]Schema
Container *{{.schema.Id}}Client
}
実際の出力:
type Client struct {
Opts *ClientOpts
Schemas *Schemas
Types map[string]Schema
Container *abcClient
}
type Client struct {
Opts *ClientOpts
Schemas *Schemas
Types map[string]Schema
Container *xyzClient
}
}
望ましい出力:
type Client struct {
Opts *ClientOpts
Schemas *Schemas
Types map[string]Schema
Container *abcClient
Container *xyzClient
}
現在の Go コードは次のようになります。
func appendToFile(filename string, template *template.Template, schema client.Schema) error {
output, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0600)
if err != nil {
panic(err)
}
defer output.Close()
data := map[string]interface{}{
"schema": schema,
}
err = template.Execute(output, data)
return err
}
私が考えることができる 1 つの解決策は、以前に追加されたコンテンツを毎回シークし、そこに新しいコンテンツを書き込むことです。しかし、Goでそれを行う方法がわかりません。誰かがそのためのコード スニペットを提供してくれたり、より良い戦略を提案してくれませんか?