gpt4 book ai didi

go - 如何检查golang模板中的非标准对象等价性

转载 作者:IT王子 更新时间:2023-10-29 01:59:44 26 4
gpt4 key购买 nike

我正在使用 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: executing "submit_scholarship" at : error calling eq: invalid type for comparison

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

最佳答案

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

}

关于go - 如何检查golang模板中的非标准对象等价性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26794013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com