如何使用Field String() 方法列印結構
fmt.Println() 列印結構的本機表示,因為它們沒有實作預設情況下為String() 介面。為每個結構實作 String() 可能很乏味,並且在新增或刪除欄位時需要更新。
用於自訂列印的幫助函數
要解決此限制,您可以利用利用反射(reflect 套件)的輔助函數:
func PrintStruct(s interface{}, names bool) string { // ... // (function body as provided in the answer) }
此函數迭代結構體欄位並檢索String()值(如果適用):
fmt.Println(PrintStruct(a, true))
結構特定的String() 方法
或者,您可以為結構定義一個String() 方法,呼叫PrintStruct( ) 函數:
func (a A) String() string { return PrintStruct(a, true) }
此方法處理結構體欄位中的動態變化,無需對String()方法的修改。
用法
使用輔助函數或特定於結構體的String() 方法,您可以輕鬆列印結構體及其欄位( ) 值:
// using the PrintStruct() function fmt.Println(PrintStruct(a, true)) // using the custom String() method (if defined) fmt.Println(a)
以上是如何使用 String() 方法有效列印包含欄位的 Go 結構體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!