Maison  >  Article  >  développement back-end  >  Texte/modèle Golang plusieurs conditions avec l'opérateur !not

Texte/modèle Golang plusieurs conditions avec l'opérateur !not

WBOY
WBOYavant
2024-02-09 16:12:22413parcourir

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

L'éditeur PHP Xigua vous présente une fonctionnalité intéressante dans Golang - plusieurs conditions de texte/modèle avec l'opérateur !not. Cette fonctionnalité est très pratique dans le moteur de modèles de Golang et peut nous aider à gérer les jugements conditionnels de manière plus flexible. En utilisant l'opérateur !not, nous pouvons juger plusieurs conditions en même temps dans le modèle, simplifier la logique du code et améliorer l'efficacité du développement. Cet article présentera en détail comment utiliser cette fonctionnalité et donnera quelques exemples d'utilisation pour aider chacun à mieux la comprendre et l'appliquer. Explorons ensemble cette fonctionnalité intéressante de Golang !

Contenu de la question

Comment utiliser la fonction de modèle indirect pour enchaîner plusieurs conditions dans Go ?

Je veux vérifier .hello 是否不包含“world”并且 .world 是否不包含“hello”,但我不能,因为我得到 2009/11/10 23:00:00 执行 template: template : content:2:5: 在 238ee6817c12cd3b0f999d2fed793ff9 执行“content”:not 的参数数量错误:want 1 收到 2message d'erreur

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

}

Aller au lien du terrain de jeu : https://go.dev/play/p/lWZwjbnSewy

Workaround

not nécessite un paramètre, des parenthèses doivent donc être utilisées.

Si vous faites cela, la condition que vous souhaitez annuler est contains "hello" 或 contains "world" :

{{if not (or (contains .hello "hello") (contains .world "hello")) }}

Cela affichera (essayez-le sur Go Playground) :

not passed

Vous pouvez également écrire cette condition sous la forme not contains "hello" and not contains "world", comme indiqué ci-dessous :

{{if and (not (contains .hello "hello")) (not (contains .world "hello")) }}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer