登录
首页 >  Golang >  Go问答

如何解析包含格式化字符串中的变量的模板?

来源:stackoverflow

时间:2024-04-05 21:18:35 167浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《如何解析包含格式化字符串中的变量的模板?》,聊聊,我们一起来看看吧!

问题内容

我有一个包含两个字段的结构。 msg 字符串将是 fmt.sprintf("%s %s"),我需要将模板解析为字符串中的这两个变量

type datadb struct {
    id  int
    msg string
}

尝试在这里解析模板,预期结果应该是 - 你好贾斯汀,我的名字是 abc

var name = "justin"
    var msg = "abc"

    justin := DataDB{ID: 1, Msg: fmt.Sprintf("%s %s", name, msg)}
    s := []DataDB{justin}

    tpl, err := template.New("msgs").Parse(` {{range .}}
     Hello {{.name}}, my name is {{.msg}}
     {{end}}
     `)
    if err != nil {
        panic(err)
    }
    tpl.Execute(os.Stdout, s)

解决方案


首先,您的 datadb 结构没有名称字段,因此您无法在模板中引用它。

将您的模板更新为以下内容:

type datadb struct {
    id  int
    name string
    msg string
}

然后在声明中设置名称

justin := datadb{id: 1, 名称: 姓名, 消息: msg}

现在您可以在模板中引用 .name 字段

tpl, err := template.New("msgs").Parse(`
    {{range .}}
    Hello {{.Name}}, my name is {{.Msg}}
    {{end}}
`)

最后,在模板中引用字段时,需要导出字段,因此应全部以大写字母开头。请参阅上面我的 datadb 结构版本。

编辑,您现在不需要 fmt.sprintf(...)

Go playground

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何解析包含格式化字符串中的变量的模板?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>