」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何擷取 Go 範本輸出並將其指派給變數?

如何擷取 Go 範本輸出並將其指派給變數?

發佈於2024-12-22
瀏覽:130

How to Capture and Assign Go Template Output to a Variable?

在Go 中捕獲模板輸出

在Go 模板中,捕獲子模板的輸出或直接將其分配給變量是默認不支持。不過,這可以透過註冊自訂函數並使用位元組緩衝區接收模板的結果來實現。

自訂函數註冊

要擷取範本輸出,請註冊Template.Funcs() 的函數將範本名稱作為參數並以字串形式傳回範本的輸出:

func execTempl(name string) (string, error) {
    buf := &bytes.Buffer{}
    err := t.ExecuteTemplate(buf, name, nil)
    return buf.String(), err
}

範本執行與結果擷取

使用Template.ExecuteTemplate() 執行名為'my-template' 的子範本並將其指派給變數:

{{$var := execTempl "my-template"}}

輸出檢索

檢索捕獲的輸出並根據需要使用它:

See result:
{{$var}}

完整範例

var t *template.Template

func main() {
    t = template.Must(template.New("").Funcs(template.FuncMap{
        "execTempl": execTempl,
    }).Parse(tmpl))

    if err := t.Execute(os.Stdout, nil); err != nil {
        panic(err)
    }
}

const tmpl = `
{{define "my-template"}}my-template content{{end}}

See result:
{{$var := execTempl "my-template"}}
{{$var}}
`

輸出:

See result:

my-template content
最新教學 更多>
  • 插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入資料時如何修復「常規錯誤:2006 MySQL 伺服器已消失」?
    插入記錄時如何解決「一般錯誤:2006 MySQL 伺服器已消失」介紹:將資料插入MySQL 資料庫有時會導致錯誤「一般錯誤:2006 MySQL 伺服器已消失」。當與伺服器的連線遺失時會出現此錯誤,通常是由於 MySQL 配置中的兩個變數之一所致。 解決方案:解決此錯誤的關鍵是調整wait_tim...
    程式設計 發佈於2024-12-22
  • 如何在 Spring 中串流大型 MySQL 結果集以避免 OutOfMemoryError?
    如何在 Spring 中串流大型 MySQL 結果集以避免 OutOfMemoryError?
    使用MySQL 串流處理大型結果集在Spring 應用程式中處理大量MySQL 表時,當驅動程式試圖執行下列操作時,可能會出現OutOfMemoryException:將整個表載入到記憶體中。設定statement.setFetchSize(Integer.MIN_VALUE);可能還不夠,因為這僅...
    程式設計 發佈於2024-12-22
  • 在 SQL 中更新同一個表後,如何安全地更新觸發器內的表?
    在 SQL 中更新同一個表後,如何安全地更新觸發器內的表?
    更新同一個表後更新觸發器中的表在SQL 中,更新觸發器後更新表同一張表提出了一個潛在的問題。這是因為該表已針對更新操作鎖定,並且嘗試在作為相同交易的一部分執行的觸發器內存取該表可能會導致衝突。 要規避此限制,您可以更新透過使用 BEFORE 選項而不是 AFTER 來影響觸發器中的列。這允許您在原始...
    程式設計 發佈於2024-12-22
  • 使用PHP的DOMDocument擷取節點時如何保留HTML標籤?
    使用PHP的DOMDocument擷取節點時如何保留HTML標籤?
    使用DOMDocument 提取HTML 節點的問題簡介DOMDocument 是PHP 類,提供了一種便捷的解析方法以及操作HTML 文件。然而,當嘗試在提取內容時保留 HTML 標籤時,使用者可能會遇到困難。本文深入探討了 DOM 的基本概念,並提出了應對這項挑戰的解決方案。 理解 DOM 和節...
    程式設計 發佈於2024-12-22
  • 如何在 Python 類型提示中指定函數類型?
    如何在 Python 類型提示中指定函數類型?
    在類型提示中指定函數類型在Python中,類型提示用於提供有關變數和函數參數的預期類型的可選元資料。然而,將變數的類型提示指定為函數類型似乎不清楚。 解決方案儘管相關中缺少“typing.Function” PEP 483,您可以使用下列指令將變數的型別提示指定為函式型別"typing.C...
    程式設計 發佈於2024-12-22
  • 為什麼我在發送 URL 編碼的 POST 請求時收到 400 BAD REQUEST?
    為什麼我在發送 URL 編碼的 POST 請求時收到 400 BAD REQUEST?
    帶有URL 編碼負載的POST 請求當構造帶有URL 編碼資料的POST 請求時,經常會遇到400 BAD REQUEST 回應,表示伺服器無法理解負載。當有效負載提供不正確時,通常會出現此問題。 標準函式庫的 http.NewRequest(...) 方法期望將有效負載作為第三個參數提供,該參數應...
    程式設計 發佈於2024-12-22
  • HTML 格式標籤
    HTML 格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2024-12-22
  • 為什麼我不能直接從定義類別中呼叫內聯友元函數?
    為什麼我不能直接從定義類別中呼叫內聯友元函數?
    內聯友元函數的可見性範圍儘管在類別中定義了內聯友元函數,但它們的實際範圍超出了類別的邊界。 C 標準規定,內聯友元函數的名稱引用在最近的封閉命名空間範圍中聲明的函數。 但是,在該命名空間內提供匹配聲明之前,無法透過非限定或限定查找存取此聲明的函數。範圍。因此,從類別本身、封閉作用域或成員函數直接呼叫...
    程式設計 發佈於2024-12-22
  • ## [].forEach.call() 如何轉換 JavaScript 類別陣列結構?
    ## [].forEach.call() 如何轉換 JavaScript 類別陣列結構?
    JavaScript 中的陣列轉換:了解[].forEach.call()使用JavaScript 時,您可能會遇到使用下列程式碼片段[].forEach.call() 迭代元素列表。該技術允許使用數組函數擴展類似數組的結構,例如 NodeList。 空數組 [] 用於存取 forEach 函數,該...
    程式設計 發佈於2024-12-22
  • 如何使用 CSS 建立具有固定標題的可捲動表格?
    如何使用 CSS 建立具有固定標題的可捲動表格?
    如何使用 CSS 和固定標題製作可捲動表格在 Web 開發中,通常需要建立包含大量資料的表格需要捲動。然而,在滾動表格主體的同時保持固定的標題可能具有挑戰性。以下是實現此效果的方法:HTML 結構首先,我們必須確保 HTML 結構正確。我們有一個帶有捲軸的外部 div,一個包含表格的內部 div,表...
    程式設計 發佈於2024-12-22
  • 如何使用 JavaScript 和 Python 產生 RSA 金鑰
    如何使用 JavaScript 和 Python 產生 RSA 金鑰
    在当今的数字时代,确保敏感信息的安全至关重要。 RSA 是最广泛使用的加密技术之一,它通过允许安全通信和数据保护来帮助实现这一目标。如果您是想要学习如何生成 RSA 密钥对的初学者,本教程将指导您通过 JavaScript 和 Python 完成该过程。 什么是 RSA? RSA (...
    程式設計 發佈於2024-12-22
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-12-22
  • 當滑鼠懸停在子元素上時,如何僅使用 CSS 來變更父容器的背景顏色?
    當滑鼠懸停在子元素上時,如何僅使用 CSS 來變更父容器的背景顏色?
    更改子級懸停時父容器的背景顏色(僅限CSS)而有關使用CSS 選擇父元素的問題通常標記為重複,它忽略了實際解決方案的需要。特別是,當滑鼠懸停在其子容器上時更改父容器的背景顏色的問題可以透過僅 CSS 方法來解決。 指針事件和懸停: 為了達到這個效果,我們可以操作指針事件和:hover偽類:設定poi...
    程式設計 發佈於2024-12-22
  • 如何修復 MySQL 儲存表情符號時出現「字串值不正確」錯誤?
    如何修復 MySQL 儲存表情符號時出現「字串值不正確」錯誤?
    解決MySQL 表情符號儲存中的「字串值不正確」錯誤儲存包含「🎶」等表情符號的推文時,用戶可能會遇到錯誤,指出「字串值不正確...」此錯誤是由不相容的字元編碼引起的。 要解決此問題問題,資料庫和儲存推文的表的字元集需要配置為支援 Unicode 字元。操作步驟如下:修改MySQL設定檔...
    程式設計 發佈於2024-12-22
  • 如何逐行讀取大文本檔案以避免記憶體過載?
    如何逐行讀取大文本檔案以避免記憶體過載?
    逐行讀取大文本文件,不會造成內存超載處理超出內存容量的海量文本文件時,逐行讀取,不會造成記憶體超載記憶體超載變得至關重要。一種節省記憶體的方法涉及直接在文件物件上使用 for 循環。 與 open(...) 一起使用建立一個上下文管理器,該管理器在讀取後會自動關閉檔案。這是一個範例:with ope...
    程式設計 發佈於2024-12-22

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3