所以这个问题似乎以前被问过几次,但之前的答案都不适合我,我从错误到错误再到没有结果。因此,由于我肯定错过了一些我没有看到的东西,因此我希望得到一些帮助:res, err := os.Create(strings.Replace(f, ".tmpl", "", -1))if err != nil { log.Fatal(err)}t, err := template.ParseFiles(f)if err != nil { log.Fatal(err)}removes = append(removes, res.Name())config := make(map[string]string)for _, v := range vars { config[v] = os.Getenv(v)}err = t.Execute(res, config)if err != nil { log.Fatal(err)}res.Close()因此,为了解释我正在做什么,我将一个字符串传递给具有yaml.tmpl扩展名的文件(路径/文件)。结果文件应该是 yaml,因此我删除了最后一个部分以生成结果文件名。然后,我使用go模板解析文件,然后使用我生成的配置映射执行。这像这样工作正常,但我想补充一点:让我生成一个错误,以防我没有从配置映射到模板中的变量提供值。.Option("missingkey=error")所以我试图在模板解析文件中添加选项,如下所示:t, err := template.New("test").Option("missingkey=error").ParseFiles(f)但是我不能使用模板执行,必须使用模板执行模板,但对于我得到的那些:或template: no template "test" associated with template "test"template: test: "test" is an incomplete or empty template在极少数情况下,我不会收到错误,它只是忽略该选项,例如如果我这样做:err = t.Option("missingkey=error").Execute(res, config)有没有人知道我做错了什么?编辑我用樱桃丽梦的答案更新了代码,这里是游乐场:游乐场目前,该游乐场只是忽略错误并执行模板,即使传递的配置为空并且模板中没有或条件。
1 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
- 1 回答
- 0 关注
- 53 浏览
添加回答
举报
0/150
提交
取消