Maison >développement back-end >Golang >le texte/modèle Golang commence par une fonction
Je suis en fonction go text/template
包中没有看到任何类型的 startswith
. Est-ce la meilleure implémentation ?
{{if eq (slice $c 0 5) "begin"}}
Il n'y a pas de fonction de modèlestartswith
intégrée.
La chose la plus propre est si vous enregistrez une fonction personnalisée avec cette fonctionnalité :
func main() { t := template.must(template.new("").funcs(template.funcmap{ "hasprefix": strings.hasprefix, }).parse(src)) for _, s := range []string{"foo", "begining"} { if err := t.execute(os.stdout, s); err != nil { panic(err) } } } const src = `{{.}}: {{if hasprefix . "begin"}}yes{{else}}no{{end}} `
Cela affichera (essayez-le sur go terrain de jeu) :
foo: no begining: yes
Si vous ne pouvez pas ou ne voulez pas enregistrer une fonction personnalisée, slice
fonctionne avec des chaînes, mais vous devez y faire attention : si la chaîne d'entrée est inférieure à 5 octets, vous obtiendrez une erreur d'exécution du modèle !
Au lieu de cela (si vous ne souhaitez pas enregistrer de fonction personnalisée), je vous recommande d'utiliser le printf
函数,精度是要比较的字符串的长度。如果输入字符串较短,printf
intégré sans panique :
{{if eq (printf "%.5s" .) "begin"}}yes{{else}}no{{end}}
Cette sortie est la même. Essayez ceci sur le go terrain de jeu.
Attention, utilisez hasprefix
更安全、更干净、更简单,因为我们不必硬编码前缀的长度 (5
).
Notez qu'en utilisant l'indexation explicite des paramètres, nous pouvons également rendre cette partie dynamique :
{{$prefix := "begin"}}{{if eq (printf "%.[1]*s" (len $prefix) .) $prefix}}yes{{else}}no{{end}}
Comme vous pouvez le voir, nous pouvons nous débarrasser de la longueur codée en dur du préfixe 5
. Cela produit à nouveau le même contenu, essayez-le sur le go Playground.
Une dernière chose à noter : la chaîne de tranche interprète l'index comme un index d'octets, tandis que la précision utilisée dans la chaîne de format est interprétée comme un compte de runes !
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!