为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用 Go 的“文本/模板”库导入变量

无法使用 Go 的“文本/模板”库导入变量

Go
慕运维8079593 2022-08-15 15:32:45
我有以下模板文件:// main.tmplThis is the main.                // line 1{{ template "myFunc" }}          // line 2{{- $name }}       // line 3// helper.tmplThis is a helper{{- $name := "Nick" -}}{{- define "myFunc" -}}  Hello{{- end -}}在围棋游乐场;package mainimport (  "text/template"  "io/ioutil"  "fmt"  "bytes")func main() {    files := []string{"helper.tmpl", "main.tmpl"}    t := template.New(files[0]).Funcs(make(map[string]interface{}))    // Read the contents of each file, and parse it.    // Couldn't get template.ParseFiles working, kept getting    // "incomplete or empty template" errors.    for _, file := range files {        f, err := ioutil.ReadFile(file)        if err != nil {            fmt.Println(err.Error())        }        t.Parse(string(f))        if err != nil {            fmt.Println(err.Error())        }    }    var buf bytes.Buffer    err := t.Execute(&buf, make(map[string]string))    if err != nil {        fmt.Println(err.Error())    }    fmt.Println(buf.String())}当我运行我的主,保持原样,输出是:main.tmplThis is a helper.但是,当我在 中删除 中的第 3 行后运行 main 时,输出为:main.tmplThis is the main.Hello问:为什么从 中调用变量会导致覆盖 ,而执行忽略其余部分?缓冲区似乎被覆盖了。这是一个错误吗?helper.tmplThis is the main.main.tmpl提前致谢。
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

https://golang.org/pkg/text/template/#hdr-Variables

变量的作用域扩展到声明变量的控制结构的“结束”操作(“if”、“with”或“range”),或者扩展到模板的末尾(如果没有此类控制结构)。模板调用不会从其调用点继承变量。


查看完整回答
反对 回复 2022-08-15
  • 1 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信