首頁  >  文章  >  後端開發  >  如何處理 fmt.Sprintf 中的意外欄位?

如何處理 fmt.Sprintf 中的意外欄位?

Patricia Arquette
Patricia Arquette原創
2024-10-31 19:05:02473瀏覽

How to Handle Unexpected Fields in fmt.Sprintf?

處理 fmt.Sprintf 中的意外欄位

在 Go 程式設計中,fmt.Sprintf 函數用於格式化字串。但是,當輸入字串包含意外欄位時,就會出現問題,導致恐慌。

問題

讓我們考慮以下程式碼片段:

<code class="go">package main

import "fmt"

func main() {
    tmp_str := "hello %s"
    str := fmt.Sprintf(tmp_str, "world")
    fmt.Println(str)
}</code>

在此範例中, tmp_str 是一個需要單一參數的範本字串。但是,如果程式收到像「Hello Friends」這樣的完整字串(而不是模板),則 fmt.Sprintf 將因存在額外參數而發生恐慌。錯誤訊息為:

Hello Friends%!(EXTRA string=world)

解決方案

處理此問題的一種方法是強制在模板字串中使用有效的 %s 動詞。使用者可以提供佔位符動詞,例如 %.0s 或 %.s,以指示如果不存在匹配字段,參數將被截斷為零長度。這是一個範例:

<code class="go">tmp_str := "Hello Friends%.s"</code>

使用 %.s 將截斷任何額外字段,從而產生所需的輸出:

Hello Friends

以上是如何處理 fmt.Sprintf 中的意外欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn