GO html/template: 测试两个点变量是否相等

GO html/template: test equality of two dot variables

我要发送 html/template 这个型号:

type MapModel struct {
Networks      []*NetworkMeta
WaveKey       string

}

Networks 字段由另一种类型 NetworkMeta 定义:

type NetworkMeta struct {
NetworkMetaKey string

}

我使用 Networks 数组生成一个 html select 对象:

            <select name="waveKey" id="waveKey">
    {{range .Networks}}
            <option value="{{ .NetworkMetaKey}}" {{if eq .NetworkMetaKey .WaveKey }} selected="selected" {{end}}>
            {{ .NetworkMetaKey }}
            </option>
    {{end}}

除了 "if eq" 等式测试外,这里的一切都有效。该测试 returns 错误:"WaveKey is not a field of struct type *models.NetworkMeta."

据我了解 html/template eq 运算符,比较测试一个值与另一个值(或一组值),一个值与其余值由 space 分隔。然而,在这种情况下,错误似乎表明对于一个字段,编译器忽略了 space。

有什么办法可以使这种平等发挥作用吗?我需要编写自定义函数吗?

感谢您的帮助。

dot 遍历 Networks 切片,因此它是 *NetworkMeta 类型。 NetworkMeta 没有 WaveKey 的任何字段。

自定义函数可能是您想要的,因为您正在尝试从不同的范围访问值。