亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go 文本/模板模板:如何根據模板本身中的值數組檢查值?

Go 文本/模板模板:如何根據模板本身中的值數組檢查值?

Go
幕布斯6054654 2023-01-03 16:55:11
假設{ "Fruit": "apple" }您在應用模板之前有一個 JSON 值作為輸入。我想檢查“Fruit”的值是否在一組中,[]string{"pear", "banana", "grape"}并根據該值是否在該組中做某事或不做某事。所以,輸入模板:{ "fruit": "apple" }模板(假設 containsVal 是我們傳遞給接受字符串和字符串片段的模板的自定義函數):{{ if containsVal .Fruit []string{"banana", "grape", "etc"} }}do stuff{{ end }}模板似乎不允許其中包含字符串切片文字——模板無法編譯。顯然,您可以定義一個結構并將其傳遞給 .Execute()?;蛘呶铱梢栽诤瘮抵杏簿幋a我的值containsVal。但出于我的目的,我希望這些值是動態的并且在模板中,而不是在 Go 代碼中硬編碼。因此,其他人應該能夠通過更新模板文本來檢查一組不同的值(“無花果”、“櫻桃”等)。我已經在https://pkg.go.dev/text/template和谷歌上搜索了一下,但沒有看到任何方法可以做到這一點。我只能對更簡單的變量做簡單的相等,比如模板中的 string == string。謝謝。
查看完整描述

1 回答

?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

您應該將“if”語句與“or”和“eq”運算符一起使用,例如:


    tmplText := `

    {{ if eq .Fruit "banana" "grape" "etc" }}

        {{ .Fruit }} exists in the list

    {{ else }}

        {{ .Fruit }} doesn't exist in the list

    {{ end }}

`


    tmpl, err := template.New("").Parse(tmplText)

    if err != nil {

        panic(err)

    }


    err = tmpl.Execute(os.Stdout, map[string]interface{}{

        "Fruit": "apple",

    })

    if err != nil {

        panic(err)

    }


查看完整回答
反對 回復 2023-01-03
  • 1 回答
  • 0 關注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號