>백엔드 개발 >Golang >효과적인 디버깅을 위해 Go 구조체에서 역참조된 포인터 값을 어떻게 인쇄할 수 있나요?

효과적인 디버깅을 위해 Go 구조체에서 역참조된 포인터 값을 어떻게 인쇄할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-11-06 08:43:021028검색

How Can I Print Dereferenced Values of Pointers in Go Structs for Effective Debugging?

디버깅을 위한 필드 역참조

포인터가 포함된 Go 구조체를 인쇄할 때 출력에는 일반적으로 실제 값 대신 메모리 주소가 표시됩니다. 디버깅을 향상시키려면 역참조된 값을 인쇄하는 것이 바람직합니다.

해결책: go-spew 패키지 사용

go-spew 패키지는 편리한 솔루션을 제공합니다. 포인터인 필드를 포함하여 구조체를 덤프하고 역참조된 값도 표시하는 데 사용할 수 있습니다.

예:

다음 Go 구조체를 고려하세요.

package main

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

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

주 함수에서 SomeStruct의 인스턴스를 생성하고 spew.Dump에 전달합니다.

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"
 })
}

이제 원하는 역참조 값("여기에 무엇이 있는지 보고 싶습니다")이 Field3 필드 아래에 표시됩니다. 이를 통해 디버깅 중에 복잡한 구조체의 포인터를 쉽게 검사할 수 있습니다.

위 내용은 효과적인 디버깅을 위해 Go 구조체에서 역참조된 포인터 값을 어떻게 인쇄할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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