Heim  >  Artikel  >  Backend-Entwicklung  >  Golang-Text/Vorlage für mehrere Bedingungen mit dem Operator !not

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

WBOY
WBOYnach vorne
2024-02-09 16:12:22462Durchsuche

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: 在 238ee6817c12cd3b0f999d2fed793ff9 执行“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)
    }

}

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

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

not passed

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen