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