我正在使用html模板输出下拉列表,如下所示:
{{range .Organisations}}
<option value="{{.Uuid}}">{{.Name}}</option>
{{end}}
我想指出应该通过eq
比较器选择其中一个项目。我所知道的唯一可能的复杂因素是.Uuid
是*gocql.UUID
,我正在尝试这样做:
{{range .Organisations}}
<option value="{{.Uuid}}"{{if eq $.Contact.Organisation .Uuid}} selected="selected"{{end}}>{{.Name}}</option>
{{end}}
但它会导致以下错误消息:
page:32:36:执行&#34; submit_scholarship&#34; at:错误调用eq:无效类型进行比较
非常感谢任何正确方向的指示。
答案 0 :(得分:3)
eq仅适用于基本类型。您可以添加自定义功能来执行此操作。 http://play.golang.org/p/rkYnlqmeLA
package main
import (
"html/template"
"os"
)
type s struct {
Name []byte
Uuid []byte
}
func main() {
data := s{[]byte("aa"), []byte("aa")}
funcMap := template.FuncMap{
"equals": func(a []byte, b []byte) bool {
return string(a) == string(b)
},
}
var html = `{{if equals .Name .Uuid }}hi{{end}}`
tmpl, _ := template.New("test").Funcs(funcMap).Parse(html)
err := tmpl.Execute(os.Stdout, data)
if err != nil {
println(err.Error())
}
}