> 백엔드 개발 > Golang > String() 메서드를 사용하여 필드가 포함된 Go 구조체를 효과적으로 인쇄하려면 어떻게 해야 합니까?

String() 메서드를 사용하여 필드가 포함된 Go 구조체를 효과적으로 인쇄하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2024-12-08 02:48:09
원래의
399명이 탐색했습니다.

How Can I Effectively Print Go Structs Containing Fields with String() Methods?

필드 문자열() 메서드를 사용하여 구조체를 인쇄하는 방법

fmt.Println()은 구조체의 기본 표현을 인쇄합니다. 기본적으로 String() 인터페이스. 모든 구조체에 대해 String()을 구현하는 것은 지루할 수 있으며 필드가 추가되거나 제거될 때 업데이트가 필요합니다.

사용자 정의 인쇄를 위한 도우미 함수

이 제한 사항을 해결하려면 다음을 수행하세요. 리플렉션(패키지 반영)을 활용하는 도우미 함수 활용:

func PrintStruct(s interface{}, names bool) string {
    // ... // (function body as provided in the answer)
}
로그인 후 복사

이 함수는 구조체 필드를 반복하고 해당하는 경우 String() 값을 검색합니다.

fmt.Println(PrintStruct(a, true))
로그인 후 복사

구조체별 String() 메서드

또는 다음과 같은 구조체에 대해 String() 메서드를 정의할 수 있습니다. PrintStruct() 함수를 호출합니다.

func (a A) String() string {
    return PrintStruct(a, true)
}
로그인 후 복사

이 메서드는 구조체 필드의 동적 변경 사항을 처리합니다. String() 메서드를 수정하지 않고

사용

도우미 함수 또는 구조체별 String() 메서드를 사용하면 해당 필드 String을 사용하여 구조체를 편리하게 인쇄할 수 있습니다. () 값:

// using the PrintStruct() function
fmt.Println(PrintStruct(a, true))

// using the custom String() method (if defined)
fmt.Println(a)
로그인 후 복사

위 내용은 String() 메서드를 사용하여 필드가 포함된 Go 구조체를 효과적으로 인쇄하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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