디버깅을 위한 포인터 필드 역참조
포인터 필드가 있는 구조체를 인쇄할 때 일반적으로 메모리 주소로 표시됩니다. 이는 특히 구조체에 수많은 포인터 필드가 포함된 경우 디버깅에 불편할 수 있습니다.
다음 예를 고려하세요.
package main import "fmt" type SomeStruct struct { somePointer *somePointer } type somePointer struct { field string } func main() { fmt.Println(SomeStruct{&somePointer{"I want to see what is in here"}}) }
이 코드는 원하는 값 대신 메모리 주소를 인쇄합니다.
{0x10500168}
포인터 필드에 저장된 실제 값을 인쇄하려면 사람이 읽을 수 있는 형식으로 복잡한 데이터 구조를 인쇄하는 데 특화된 go-spew 패키지를 사용할 수 있습니다.
사용 방법은 다음과 같습니다. it:
package main import ( "github.com/davecgh/go-spew/spew" ) type ( SomeStruct struct { Field1 string Field2 int Field3 *somePointer } somePointer struct { field string } ) func main() { s := SomeStruct{ Field1: "Yahoo", Field2: 500, Field3: &somePointer{"I want to see what is in here"}, } spew.Dump(s) }
이 코드는 다음과 같은 출력을 생성합니다.
(main.SomeStruct) { Field1: (string) "Yahoo", Field2: (int) 500, Field3: (*main.somePointer)(0x2102a7230)({ field: (string) "I want to see what is in here" }) }
보시다시피 go-spew는 구조체에 대해 훨씬 더 자세하고 유익한 표현을 제공합니다. 포인터 필드는 역참조되어 실제 값으로 표시됩니다. 이렇게 하면 디버깅 중에 구조체의 내용을 검사하는 것이 훨씬 쉬워집니다.
위 내용은 Go에서 효과적인 디버깅을 위해 포인터 필드를 역참조하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!