在Go 中列印帶有指標的結構體值
在Go 中,當列印包含指針的結構體值時,通常的結構體值時,通常會列印指標位址的實際值。當嘗試檢查嵌套結構的內容時,這可能會出現問題。
如何列印B 結構體值而不是指針
要解決此問題,您可以有兩個選項:
實作Stringer介面:
為A 和 B結構體實作 String() 方法。此方法傳回結構的格式化字串表示形式。在實作中,列印所需的值而不是指標。
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.Println(a) }
手動列印值:
存取實際值B 手動構造並直接列印。
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("A{a:%d, B:{b:%d}}\n", a.a, a.B.b) }
以上是如何在 Go 中列印嵌套結構的值而不是指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!