插件窝 干货文章 Go模板变量赋值:如何像PHP的assign方法一样在Go模板中传递数据?

Go模板变量赋值:如何像PHP的assign方法一样在Go模板中传递数据?

模板 数据 err 使用 382    来源:    2025-03-14

在Go语言中,使用html/templatetext/template包来处理模板时,可以通过将数据传递给模板来渲染动态内容。虽然Go的模板系统与PHP的assign方法有所不同,但你可以通过类似的方式将数据传递给模板。

1. 定义模板

首先,你需要定义一个模板。模板可以是一个字符串,也可以是一个文件。

const tmpl = `Hello, {{.Name}}!`

2. 解析模板

使用template.New创建一个新的模板,并使用Parse方法解析模板字符串。

t, err := template.New("example").Parse(tmpl)
if err != nil {
    log.Fatalf("解析模板失败: %v", err)
}

3. 准备数据

准备一个结构体或映射来存储你要传递给模板的数据。

data := struct {
    Name string
}{
    Name: "World",
}

4. 执行模板

使用Execute方法将数据传递给模板并渲染结果。

err = t.Execute(os.Stdout, data)
if err != nil {
    log.Fatalf("执行模板失败: %v", err)
}

完整示例

package main

import (
    "log"
    "os"
    "text/template"
)

func main() {
    // 定义模板
    const tmpl = `Hello, {{.Name}}!`

    // 解析模板
    t, err := template.New("example").Parse(tmpl)
    if err != nil {
        log.Fatalf("解析模板失败: %v", err)
    }

    // 准备数据
    data := struct {
        Name string
    }{
        Name: "World",
    }

    // 执行模板
    err = t.Execute(os.Stdout, data)
    if err != nil {
        log.Fatalf("执行模板失败: %v", err)
    }
}

输出

运行上述代码后,输出将是:

Hello, World!

使用映射(Map)传递数据

你也可以使用映射(map)来传递数据,而不是使用结构体。

data := map[string]string{
    "Name": "World",
}

总结

在Go中,你可以通过将数据传递给模板的Execute方法来渲染动态内容。虽然Go的模板系统与PHP的assign方法有所不同,但你可以通过结构体或映射来实现类似的功能。