2016-08-15 2 views
1

나는 Golang과 놀고 있는데 변수에 사용할 수있는 모든 메서드 나 속성을 나열 할 수있는 방법이 있는지 알고 싶습니다. 루비에서는 에 정의 된 모든 메소드를 얻기 위해 간단히 some_variable.methods을 사용할 수 있습니다. Golang과 비슷한 점이 있습니까?Golang이 Ruby의 "메소드"메소드와 동일한 것은 무엇입니까?

+2

글쎄, 당신은 "반사"로 질문 태그를 지정 했으므로 어디서 볼 것인지 알 것입니다 :'패키지 반영'. 특히 https://golang.org/pkg/reflect/#Value.Method. – Volker

답변

6

예, 가능합니다. 반영을 통해 각 reflect.Type 개체는 실제 형식이 노출하는 모든 메서드를 열거 할 수 있습니다.

import (
    "fmt" 
    "reflect" 
) 

type Foo struct { 
} 

func (f Foo) Bar() { 
} 

func (f Foo) Baz() { 
} 

func main() { 

    t := reflect.TypeOf(Foo{}) 
    for i := 0; i < t.NumMethod(); i++ { 
     fmt.Println(t.Method(i).Name) 
    } 
} 
// Output: 
// Bar 
// Baz 

이것은 또한 당신이 필요에 따라 reflect.Value에 수행 할 수 있습니다하지만 이동에 할 수있는 매우 일반적인 또는 관용적 인 것은 아니다.

하지만 진짜 질문은 - 여기서 무엇을하려고합니까? 유형이 인터페이스 또는 이와 유사한 것을 구현하는지 확인하려고합니까? 아마도 목표에 대한보다 간단한 해결책이있을 것입니다. 실제 목표는 무엇입니까?

+0

감사합니다. Golang을 배우면서 변수에 사용할 수있는 모든 메서드 나 속성을 빠르게 살펴보고 싶습니다. – user130268

+4

@ user130268 표준 라이브러리의 문서는 더 나은 해결책입니다. IMHO :) –

2

개발 단계에만이 도구가 필요한 경우 개발 도구 guru이 필요합니다.

관련 문제