Go에서 디버깅을 위해 포인터 필드를 예쁘게 인쇄하는 방법은 무엇인가요?
Go 프로그램을 디버깅할 때 내용을 인쇄하는 것이 유용할 수 있습니다. 포인터 필드를 포함한 구조체. 그러나 기본적으로 Go는 포인터 필드를 메모리 주소로 인쇄하므로 도움이 되지 않을 수 있습니다.
다음 코드를 고려하세요.
type SomeStruct struct { somePointer *somePointer } type somePointer struct { field string } func main() { fmt.Println(SomeStruct{&somePointer{"I want to see what is in here"}}) }
이 코드는 원하는 문자열 대신 메모리 주소를 인쇄합니다. 값. 참조 해제된 값을 인쇄하려면 go-spew 패키지를 사용할 수 있습니다.
import ( "github.com/davecgh/go-spew/spew" ) func main() { s := SomeStruct{ Field1: "Yahoo", Field2: 500, Field3: &somePointer{"I want to see what is in here"}, } spew.Dump(s) }
이 코드는 spew.Dump 함수를 사용하여 포인터 필드의 참조 해제된 값을 포함하여 SomeStruct의 내용을 인쇄합니다. 출력은 다음과 같습니다.
(main.SomeStruct) { Field1: (string) "Yahoo", Field2: (int) 500, Field3: (*main.somePointer)(0x2102a7230)({ field: (string) "I want to see what is in here" }) }
이 출력에는 somePointer 구조체의 필드 필드에 대해 원하는 문자열 값이 포함됩니다. go-spew 패키지는 구조화된 데이터를 읽을 수 있는 형식으로 인쇄하는 편리한 방법을 제공하므로 중첩된 포인터 필드가 있는 복잡한 구조를 더 쉽게 디버그할 수 있습니다.
위 내용은 Go에서 디버깅을 위해 포인터 필드를 예쁘게 인쇄하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!