1

我正在使用 html 模板输出一个下拉列表,如下所示:

{{range .Organisations}}
 <option value="{{.Uuid}}">{{.Name}}</option>
{{end}}

我想表明应该通过eq比较来选择其中一项。我知道的唯一潜在并发症是.Uuidis a *gocql.UUID,我正在尝试这样做:

{{range .Organisations}}
 <option value="{{.Uuid}}"{{if eq $.Contact.Organisation .Uuid}} selected="selected"{{end}}>{{.Name}}</option>
{{end}}

但它会导致以下错误消息:

页:32:36:在执行“submit_scholarship”:错误调用 eq:用于比较的类型无效

任何指向正确方向的指针都将不胜感激。

4

1 回答 1

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())
    }

}
于 2014-11-07T07:12:39.420 回答