>  기사  >  백엔드 개발  >  디버깅하는 동안 Go 구조체에 포인터 필드의 기본 값을 표시하려면 어떻게 해야 합니까?

디버깅하는 동안 Go 구조체에 포인터 필드의 기본 값을 표시하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-07 14:27:03223검색

How Can I Display the Underlying Values of Pointer Fields in Go Structs During Debugging?

포인터 필드 디버깅

Go에서 포인터 필드가 포함된 구조체를 인쇄하면 일반적으로 실제 값이 아닌 메모리 주소가 출력됩니다. 이는 디버깅 중에, 특히 수많은 포인터 필드를 처리할 때 불편할 수 있습니다.

포인터 필드 역참조

포인터 필드의 기본 값을 표시하려면 수동으로 다음을 수행하는 것이 좋습니다. 별표 연산자(*)를 사용하여 각 필드를 역참조합니다. 그러나 이 접근 방식은 여러 포인터 필드가 있는 구조체의 경우 지루합니다.

go-spew 사용

Go는 이러한 시나리오를 디버깅하기 위한 강력한 도구인 go-spew 패키지를 제공합니다. . 이 패키지는 모든 값의 구조를 자세히 알아볼 수 있는 쉬운 방법을 제공합니다.

다음 코드를 고려하세요.

package main

import (
    "fmt"
    "github.com/davecgh/go-spew/spew"
)

type SomeStruct struct {
    Field1 string
    Field2 int
    Field3 *somePointer
}

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

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