当前位置: 首页 > 面试题库 >

如何在Go的html / template中获取地图元素的struct字段?

屠锐
2023-03-14
问题内容

我有一个Struct Task

type Task struct {
   cmd string
   args []string
   desc string
}

然后我初始化一个以上述Task结构作为值和string键作为键(任务名称)的映射

var taskMap = map[string]Task{
    "find": Task{
        cmd: "find",
        args: []string{"/tmp/"},
        desc: "find files in /tmp dir",
    },
    "grep": Task{
        cmd: "grep",
        args:[]string{"foo","/tmp/*", "-R"},
        desc: "grep files match having foo",
    },
}

我想html/template只使用上述解析html页面taskMap

func listHandle(w http.ResponseWriter, r *http.Request){
    t, _ := template.ParseFiles("index.tmpl")
    t.Execute(w, taskMap)
}

这是index.tmpl

<html>
{{range $key, $value := .}}
   <li>Task Name:        {{$key}}</li>
   <li>Task Value:       {{$value}}</li>
   <li>Task description: {{$value.desc}}</li>
{{end}}
</html>

我可以成功获取$keyvalue打印,但是在Task使用领域,{{$value.desc}}它是行不通的。

在这种情况下,如何获得desc每个的task


问题答案:

注意:您可以在 Go Playground中
尝试/签出您工作的修改后的代码。

如果希望template软件包能够访问字段,则必须导出字段。您可以通过以大写字母开头的字段来导出该字段:

type Task struct {
   cmd string
   args []string
   Desc string
}

请注意,我仅Desc在此处进行了更改,您必须将要在模板中引用的所有其他字段都大写。

导出之后Desc,请当然将所有引用更改为大写:

var taskMap = map[string]Task{
    "find": Task{
        cmd: "find",
        args: []string{"/tmp/"},
        Desc: "find files in /tmp dir",
    },
    "grep": Task{
        cmd: "grep",
        args:[]string{"foo","/tmp/*", "-R"},
        Desc: "grep files match having foo",
    },
}

并且在模板中:

<html>
{{range $key, $value := .}}
   <li>Task Name:        {{$key}}</li>
   <li>Task Value:       {{$value}}</li>
   <li>Task description: {{$value.Desc}}</li>
{{end}}
</html>

输出:

<html>

<li>Task Name:        find</li>
<li>Task Value:       {find [/tmp/] find files in /tmp dir}</li>
<li>Task description: find files in /tmp dir</li>

<li>Task Name:        grep</li>
<li>Task Value:       {grep [foo /tmp/* -R] grep files match having foo}</li>
<li>Task description: grep files match having foo</li>

</html>


 类似资料:
  • 问题内容: 我正在寻找一种从样式标签中设置了样式的元素中检索样式的方法。 在身体里 我正在寻找不使用库的直接javascript。 我尝试了以下操作,但始终收到空白: 我注意到,如果我已使用javascript设置了样式,但无法使用样式标签,则只能使用以上内容。 问题答案: 该属性仅让您知道在该元素中定义为内联的CSS属性(以编程方式或在元素的style属性中定义),应该获取计算出的style。

  • 我有我的python代码,在那里我使用html文件。请参阅以下代码: 这给了我一个html页面,它有一个包含两个字段的表单和一个提交按钮。我使用虚拟环境来运行这个。 现在我想在我的程序中获取字段first name和last name,这样当用户单击submit时,我想显示Hello“first name”“last name” 目的:-学习如何在python文件中提供代码时获取html元素值。

  • 问题内容: 如何使用JavaScript 获取任何元素(例如)的背景颜色?我努力了: 问题答案: 与所有包含连字符的css属性一样,它们在JS中的对应名称是删除连字符并使用以下字母大写:

  • 我有一个要求,以显示视频(卡)在几行缩略图,并集中在第一个缩略图。我使用嵌套贴图进行显示。代码基本上在视频数组上迭代并返回几行视频。 我们如何关注渲染的第一个元素?我认为我们需要得到第一个元素的ref来聚焦。但是我们如何在这里设置ref并在另一个函数中引用它呢?

  • 问题内容: 我正在寻找一种从包含HTML的字符串中获取HTML元素的方法。是否可以使用jQuery选择器来做到这一点? 我有一个Javascript函数,可以从服务器获取整个页面,但是我只需要该页面的一个元素。 问题答案: 是的,您可以将字符串转换为元素,然后从中选择元素。例:

  • 问题内容: 我想知道Go中的“ struct {}”和“ struct {} {}”是什么意思?示例如下: 要么 问题答案: 是Go中的关键字。它用于定义结构类型,结构类型是命名元素的序列。 例如: 的是一个具有零个元素类型。通常在不存储任何信息时使用。它具有大小为0的优点,因此通常不需要内存来存储type值。 另一方面是复合文字,它构造一个类型的值。复合文字构造用于类型的值,例如结构,数组,映射