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

转到模板:一起使用嵌套结构的字段和{{range}}标签

陆昂然
2023-03-14
问题内容

我有以下嵌套的结构,我想在模板中的{{range .Foos}}标签中对其进行迭代。

type Foo struct {
    Field1, Field2 string
}

type NestedStruct struct {
    NestedStructID string
    Foos []Foo
}

我正在尝试使用以下html / template,但无法访问NestedStructIDfrom NestedStruct

{{range .Foos}} { source: '{{.Field1}}', target: '{{.NestedStructID}}' }{{end}}

golang模板有什么方法可以做我想做的事吗?


问题答案:

您无法到达那样的NestedStructID字段,因为该{{range}}操作将.每次迭代中的流水线(点)设置为当前元素。

您可以使用$设置为传递给数据参数的Template.Execute();因此,如果您传递的值NestedStruct,则可以使用$.NestedStructID

例如:

func main() {
    t := template.Must(template.New("").Parse(x))

    ns := NestedStruct{
        NestedStructID: "nsid",
        Foos: []Foo{
            {"f1-1", "f2-1"},
            {"f1-2", "f2-2"},
        },
    }
    fmt.Println(t.Execute(os.Stdout, ns))
}

const x = `{{range .Foos}}{ source: '{{.Field1}}', target: '{{$.NestedStructID}}' }
{{end}}`

输出(在Go Playground上尝试):

{ source: 'f1-1', target: 'nsid' }
{ source: 'f1-2', target: 'nsid' }
<nil>

记录在text/template

开始执行时,将$设置为传递给Execute的数据参数,即dot的起始值。



 类似资料:
  • 原文: http://exploringjs.com/impatient-js/ch_template-literals.html 在我们深入研究两个特征 _ 模板字面值 _ 和 _ 标记模板 _ 之前,让我们首先检查术语 _ 模板 _ 的多重含义。 19.1。消歧:“模板” 尽管所有名称中都有 _ 模板 _ 并且所有这些模板看起来都相似,但以下三件事情有很大不同: _ 网页模板 _ 是从数据到文

  • 我试图使用模板过滤器来运行循环,但我无法在同一个语句/模板中组合两个python语句。在模板中组合两个变量的正确方法是什么?请看下面的语法和解释: 我正在建立一个双索引的论坛,意思是,我有一个col-md-2与类别列表。每个类别都有论坛,根据点击的类别,该类别的论坛填充下一个col-md-2。剩下的col-md-8根据选择了哪个类别和哪个论坛来获取其内容。 我的逻辑: 在我的模板中,我尝试按如下方

  • 问题内容: 我正在尝试从高度嵌套的go结构构建mongo文档,并且从go struct过渡到mongo对象遇到了问题。我已经在这里构建了一个 非常 简化的版本:http : //play.golang.org/p/yPZW88deOa 运行此命令将产生以下输出: 完全有道理。似乎Write函数或json.Marshal函数都具有折叠嵌套结构的某些功能,但是当我尝试使用mgo函数将此数据插入到mon

  • 问题内容: 我的问题涉及到如何处理AngularJS应用程序中模板的复杂嵌套(也称为partials)。 如您所见,这有可能成为具有许多嵌套模型的相当复杂的应用程序。 该应用程序是单页的,因此它将加载index.html,该索引包含DOM中具有ng-view属性的div元素。 对于第1圈,您看到有一个主导航将相应的模板加载到中ng-view。我通过传递$routeParams给主应用程序模块来实现

  • 10.5.1 定义 结构体可以包含一个或多个 匿名(或内嵌)字段,即这些字段没有显式的名字,只有字段的类型是必须的,此时类型就是字段的名字。匿名字段本身可以是一个结构体类型,即 结构体可以包含内嵌结构体。 可以粗略地将这个和面向对象语言中的继承概念相比较,随后将会看到它被用来模拟类似继承的行为。Go 语言中的继承是通过内嵌或组合来实现的,所以可以说,在 Go 语言中,相比较于继承,组合更受青睐。

  • 我正在尝试创建比较和嵌套属性与非嵌套属性的请求 映射: 我要查找sum of Accounts.FollowersCount与TotalSubscribers不相等的文档。 怎么做? PS:我正在尝试创建这样的内容: 但不管用。当我将脚本移动到嵌套块时也会出现同样的问题。那么我就无法访问TotalSubscribers 请求2: 在“total+=ctx._source.accounts[i].f