> 백엔드 개발 > Golang > Go 구조체의 속성과 메서드를 모두 덤프하려면 어떻게 해야 하나요?

Go 구조체의 속성과 메서드를 모두 덤프하려면 어떻게 해야 하나요?

Barbara Streisand
풀어 주다: 2024-12-30 19:18:15
원래의
211명이 탐색했습니다.

How Can I Dump Both Properties and Methods of a Go Struct?

Golang의 구조체 덤프 방법

Golang의 "fmt" 패키지는 구조체의 속성을 덤프하는 "Printf" 방법을 제공하지만 다음과 같은 방법이 있습니다. 구조체의 속성과 메서드를 모두 검색해야 합니다. 다음 예를 고려하십시오.

type Foo struct {
    Prop string
}
func (f Foo)Bar() string {
    return f.Prop
}
로그인 후 복사

"Foo" 유형의 초기화된 인스턴스에서 "Bar()" 메소드의 존재를 확인하려면 "reflect" 패키지 사용을 고려하십시오. 이를 수행하는 방법은 다음과 같습니다.

fooType := reflect.TypeOf(&Foo{})
for i := 0; i < fooType.NumMethod(); i++ {
    method := fooType.Method(i)
    fmt.Println(method.Name)
}
로그인 후 복사

유형이 특정 메서드 세트를 구현하는지 확인하는 것이 목표라면 인터페이스와 유형 어설션이 더 편리할 수 있습니다. 예:

func implementsBar(v interface{}) bool {
    type Barer interface {
        Bar() string
    }
    _, ok := v.(Barer)
    return ok
}
로그인 후 복사

"Bar()" 메서드에 대해 "Foo" 인스턴스를 테스트하려면:

fmt.Println("Foo implements the Bar method:", implementsBar(Foo{}))
로그인 후 복사

또는 유형에 특정 메서드가 있음을 명시적으로 주장하려면 컴파일 시간:

var _ Barer = Foo{}
로그인 후 복사

위 내용은 Go 구조체의 속성과 메서드를 모두 덤프하려면 어떻게 해야 하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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