日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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 將行縮進兩個字符。如果運行代碼,您將獲得所需的輸出。

可以在此處找到可用功能的完整列表。
如果這解決了您的問題,請告訴我,謝謝!

分享到:
標簽:Go語言
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定