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

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

Susan Sarandon
풀어 주다: 2024-11-06 08:43:02
원래의
1020명이 탐색했습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿