自訂帶有指標的結構體的列印輸出
在Go 中列印帶有指針的結構體時,使用預設的%v 格式說明符可能無法提供想要的結果。這是因為它列印指標位址而不是引用的結構體的內容。
要解決這個問題,有兩種主要方法:為結構體類型定義自訂 String 方法或手動格式化輸出。
定義自訂字串方法
首選方法是為所涉及的結構實作 Stringer 介面類型。這可以透過向結構添加 String() 字串方法來完成。傳遞給 printf 函數的格式字串將會呼叫此方法。
例如:
package main import "fmt" type A struct { a int32 B *B } type B struct{ b int32 } func (aa *A) String() string { return fmt.Sprintf("A{a:%d, B:%v}",aa.a,aa.B) } func (bb *B) String() string { return fmt.Sprintf("B{b:%d}",bb.b) } func main() { a := &A{a: 1, B: &B{b: 2}} fmt.Printf("v ==== %v \n", a) // Prints "v ==== A{a:1, B:B{b:2}}" }
手動格式化
在沒有String 方法,您可以使用各個結構成員的格式說明符手動格式化輸出。
package main import "fmt" type A struct { a int32 B *B } type B struct{ b int32 } func main() { a := &A{a: 1, B: &B{b: 2}} fmt.Printf("v ==== A{a:%d, B:B{b:%d}}\n", a.a, a.B.b) }
以上是如何為帶有指針的結構定制 Go 的列印輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!