首頁 > 後端開發 > Golang > 在 Go 中什麼時候應該使用 `%v` 進行列印?

在 Go 中什麼時候應該使用 `%v` 進行列印?

DDD
發布: 2024-11-26 09:09:08
原創
500 人瀏覽過

When Should You Use `%v` for Printing in Go?

使用 %v 列印:需要考慮的潛在問題

雖然 %v 動詞允許列印整數 (%d)和字串(%s),應謹慎考慮其使用以避免意外格式化

預設格式與特定格式

與%d 動詞不同,%d 動詞指示fmt 套件將數值列印為數字(基數為10), %v 動詞使用預設格式。可以透過為自訂類型實作 fmt.Stringer 介面(使用 String() 字串方法)來覆寫此預設格式。

範例

考慮以下程式碼使用實作fmt.Stringer 的自訂類型MyInt介面:

type MyInt int

func (mi MyInt) String() string {
    return fmt.Sprintf("*%d*", int(mi))
}

func main() {
    var mi MyInt = 2
    fmt.Printf("%d %v", mi, mi)
}
登入後複製

輸出:

2 *2*
登入後複製

輸出:輸出:

輸出: >

使用%v 時,fmt套件檢查該值是否實作 fmt.Stringer 並呼叫其 String()方法。這會導致值以覆蓋的格式顯示(“
    2
  1. ”而不是“2”)。

      格式規則
    • fmt套件在使用時遵循一組特定的格式規則%v:
    It檢查介面實作:
  2. reflect.Value: 替換為實際值。
  3. Formatter:使用自訂格式

GoStringer(帶#​​v):呼叫GoStringer方法。

String() 方法:如果實作 String() 字串,將其值轉換為字串。

Error 方法:如果實作 error 接口,則使用 Error方法將其值轉換為字串。 結論雖然技術上可以始終使用%v 進行列印,但通常建議使用特定動詞就像整數和字串的%d 和% s 一樣。如果您的類型實作某些接口,特別是 fmt.Stringer,則使用 %v 可能會導致意外的格式化行為。

以上是在 Go 中什麼時候應該使用 `%v` 進行列印?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板