Go 範本和多行字串縮排
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 範本和多行字串縮排的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

Go語言中用於浮點數運算的庫介紹在Go語言(也稱為Golang)中,進行浮點數的加減乘除運算時,如何確保精度是�...

Go爬蟲Colly中的Queue線程問題探討在使用Go語言的Colly爬蟲庫時,開發者常常會遇到關於線程和請求隊列的問題。 �...

Go語言中字符串打印的區別:使用Println與string()函數的效果差異在Go...

Go語言中結構體定義的兩種方式:var與type關鍵字的差異Go語言在定義結構體時,經常會看到兩種不同的寫法:一�...

Go語言中哪些庫是大公司開發或知名開源項目?在使用Go語言進行編程時,開發者常常會遇到一些常見的需求,�...

Go編程中的資源管理:Mysql和Redis的連接與釋放在學習Go編程過程中,如何正確管理資源,特別是與數據庫和緩存�...
