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 중국어 웹사이트의 기타 관련 기사를 참조하세요!