Golang-Text/Vorlage für mehrere Bedingungen mit dem Operator !not

WBOY
Freigeben: 2024-02-09 16:12:22
nach vorne
465 Leute haben es durchsucht

Golang 文本/模板带有 !not 运算符的多个条件

Der PHP-Editor Xigua stellt Ihnen eine interessante Funktion in Golang vor – mehrere Bedingungen für Text/Vorlage mit dem Operator !not. Diese Funktion ist in der Template-Engine von Golang sehr praktisch und kann uns dabei helfen, bedingte Urteile flexibler zu handhaben. Durch die Verwendung des !not-Operators können wir mehrere Bedingungen gleichzeitig in der Vorlage beurteilen, die Codelogik vereinfachen und die Entwicklungseffizienz verbessern. In diesem Artikel wird die Verwendung dieser Funktion im Detail vorgestellt und einige Anwendungsbeispiele gegeben, damit jeder sie besser verstehen und anwenden kann. Lassen Sie uns gemeinsam dieses interessante Golang-Feature erkunden!

Frageninhalt

Wie verwende ich die indirekte Vorlagenfunktion, um mehrere Bedingungen in Go zu verketten?

Ich möchte die .hello 是否不包含“world”并且 .world 是否不包含“hello”,但我不能,因为我得到 2009/11/10 23:00:00 执行 template: template : content:2:5: 在 <not> 执行“content”:not 的参数数量错误:want 1 收到 2Fehlermeldung

überprüfen
package main

import (
    "log"
    "os"
    "strings"
    "text/template"
)

var (
    templateFuncMap = template.FuncMap{
        "contains": strings.Contains,
    }
)

func main() {
    // Define a template.
    const temp = `
{{if not (contains .hello "hello") (contains .world "hello") }}
        passed
{{else}}
        not passed
{{end}}`

    s := map[string]string{
        "hello": "world",
        "world": "hello",
    }

    t := template.Must(template.New("content").Funcs(templateFuncMap).Parse(temp))
    err := t.Execute(os.Stdout, s)
    if err != nil {
        log.Println("executing template:", err)
    }

}
Nach dem Login kopieren

Gehe zum Playground-Link: https://go.dev/play/p/lWZwjbnSewy

Workaround

not erfordert einen Parameter, daher müssen Klammern verwendet werden.

Wenn Sie dies tun, ist die Bedingung, die Sie negieren möchten, contains "hello" 或 contains "world":

{{if not (or (contains .hello "hello") (contains .world "hello")) }}
Nach dem Login kopieren

Dies wird ausgegeben (versuchen Sie es auf Go Playground):

not passed
Nach dem Login kopieren

Sie können diese Bedingung auch als not contains "hello" and not contains "world" schreiben, wie unten gezeigt:

{{if and (not (contains .hello "hello")) (not (contains .world "hello")) }}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonGolang-Text/Vorlage für mehrere Bedingungen mit dem Operator !not. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage