所以這個(gè)問題似乎以前被問過幾次,但之前的答案都不適合我,我從錯(cuò)誤到錯(cuò)誤再到?jīng)]有結(jié)果。因此,由于我肯定錯(cuò)過了一些我沒有看到的東西,因此我希望得到一些幫助: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()因此,為了解釋我正在做什么,我將一個(gè)字符串傳遞給具有yaml.tmpl擴(kuò)展名的文件(路徑/文件)。結(jié)果文件應(yīng)該是 yaml,因此我刪除了最后一個(gè)部分以生成結(jié)果文件名。然后,我使用go模板解析文件,然后使用我生成的配置映射執(zhí)行。這像這樣工作正常,但我想補(bǔ)充一點(diǎn):讓我生成一個(gè)錯(cuò)誤,以防我沒有從配置映射到模板中的變量提供值。.Option("missingkey=error")所以我試圖在模板解析文件中添加選項(xiàng),如下所示:t, err := template.New("test").Option("missingkey=error").ParseFiles(f)但是我不能使用模板執(zhí)行,必須使用模板執(zhí)行模板,但對于我得到的那些:或template: no template "test" associated with template "test"template: test: "test" is an incomplete or empty template在極少數(shù)情況下,我不會(huì)收到錯(cuò)誤,它只是忽略該選項(xiàng),例如如果我這樣做:err = t.Option("missingkey=error").Execute(res, config)有沒有人知道我做錯(cuò)了什么?編輯我用櫻桃麗夢的答案更新了代碼,這里是游樂場:游樂場目前,該游樂場只是忽略錯(cuò)誤并執(zhí)行模板,即使傳遞的配置為空并且模板中沒有或條件。
1 回答

慕田峪9158850
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
解析文件方法文檔說:
由于 ParseFiles 創(chuàng)建的模板由參數(shù)文件的基名稱命名,因此 t 通常應(yīng)具有文件(基本)名稱之一的名稱。
使用文件路徑?;?/a>數(shù) 以獲取文件的基名稱。使用該名稱作為模板的名稱:
t, err := template.New(filepath.Base(f)).Option("missingkey=error").ParseFiles(f)
- 1 回答
- 0 關(guān)注
- 68 瀏覽
添加回答
舉報(bào)
0/150
提交
取消