3 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
使用數(shù)組作為第二個(gè)參數(shù),而不是模板本身。
package main
import (
"html/template"
"log"
"os"
)
func main() {
t := template.Must(template.New("").Parse(`{{- range .}}{{.}}:
echo "from {{.}}"
{{end}}
`))
t.Execute(os.Stdout, []string{"app1", "app2", "app3"})
f, err := os.Create("./myfile")
if err != nil {
log.Println("create file: ", err)
return
}
err = t.Execute(f, []string{"app1", "app2", "app3"})
if err != nil {
log.Print("execute: ", err)
return
}
f.Close()
}
輸出:
app1:
echo "from app1"
app2:
echo "from app2"
app3:
echo "from app3"
而內(nèi)容myfile是,
app1:
echo "from app1"
app2:
echo "from app2"
app3:
echo "from app3"

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
你給了一個(gè)錯(cuò)誤的參數(shù):
err = t.Execute(f, t)
它應(yīng)該是
err = t.Execute(f,[]string{"app1", "app2", "app3"})

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
您第二次傳遞給模板執(zhí)行的參數(shù)應(yīng)該與您第一次傳遞的參數(shù)相匹配。
首先你做:
t.Execute(os.Stdout, []string{"app1", "app2", "app3"})
其次你做:
err = t.Execute(f, t)
您傳遞了模板本身 ( t
)。將其更改為:
err = t.Execute(f, []string{"app1", "app2", "app3"})
您的模板迭代傳遞的參數(shù)(帶有一個(gè){{range}}
動(dòng)作),當(dāng)您傳遞一個(gè)切片時(shí)它會(huì)起作用,而在傳遞模板時(shí)它不會(huì)起作用,它是一個(gè)指向結(jié)構(gòu)的指針,它不是模板引擎可以迭代的東西。
- 3 回答
- 0 關(guān)注
- 208 瀏覽
添加回答
舉報(bào)