>  기사  >  백엔드 개발  >  Go에서 디버깅을 위해 포인터 필드를 예쁘게 인쇄하는 방법은 무엇입니까?

Go에서 디버깅을 위해 포인터 필드를 예쁘게 인쇄하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-07 18:00:05492검색

How to Pretty-Print Pointer Fields for Debugging in Go?

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.