Aller aux modèles et à l'indentation de chaîne multiligne
php小编子墨为您介绍Go语言中的模板和多行字符串缩进。在Go语言中,模板是一种方便生成文本输出的工具,它可以将变量插入到指定的模板中,并生成最终的输出结果。同时,多行字符串缩进是一种使代码更易读的技巧,它可以使代码在多行展示时保持一致的缩进风格,提高代码的可读性和维护性。在本文中,我们将详细介绍Go语言中模板的使用方法和多行字符串缩进的技巧,帮助您更好地应用于实际开发中。
问题内容
因此,我尝试使用 text/template
包和模板值(多行字符串)来生成 yaml 文件。我遇到的问题是模板字符串的缩进与 tpl 中的模板变量不在同一级别。
这里的(有点人为的例子):
package main import ( "os" "text/template" ) func main() { tpl := template.must(template.new("yml").parse( `routes: {{ . }} `)) value := `foo bar` tpl.execute(os.stdout, value) }
游乐场:https://goplay.space/#2ek7_elztwa
我想在这里看到的输出显然是
routes: foo bar
而不是
routes: foo bar
是否有一些神奇的前缀可以避免这种情况?
解决方法
我能够使用以下代码来满足您的要求。我使用了包小枝。它为我们提供了可以轻松实现您目标的功能。代码如下:
package main import ( "os" "text/template" "github.com/Masterminds/sprig/v3" ) func main() { tpl := template.Must(template.New("yml").Funcs(sprig.FuncMap()).Parse( `routes: {{ . | indent 2 }} `)) value := `foo bar` tpl.Execute(os.Stdout, value) }
我使用 funcs
方法将函数传递到模板引擎中。这些函数是从对 sprig.funcmap()
的调用中返回的。
请注意,您必须在 parse
之前调用此函数,否则会出现混乱。
然后,我添加了注释| indent 2
将行缩进两个字符。如果运行代码,您将获得所需的输出。
可以在此处找到可用功能的完整列表。
如果这解决了您的问题,请告诉我,谢谢!
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Deux façons de définir les structures dans le langage GO: la différence entre les mots clés VAR et le type. Lorsque vous définissez des structures, GO Language voit souvent deux façons d'écrire différentes: d'abord ...

GO POINTER SYNTAXE ET ATTENDRE DES PROBLÈMES DANS LA BIBLIOTHÈQUE VIPER Lors de la programmation en langage Go, il est crucial de comprendre la syntaxe et l'utilisation des pointeurs, en particulier dans ...

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

Pourquoi l'itération de la carte dans GO fait-elle que toutes les valeurs deviennent le dernier élément? En langue go, face à des questions d'entrevue, vous rencontrez souvent des cartes ...
