당신은 LookupObject
의 관심있는에 Scope
와 이름을 사용할 수 있습니다.
를 객체 (예 : 패키지, 상수, 타입, 변수, 함수로 명명 된 언어의 실체를 설명 메소드 포함) 또는 레이블. 모든 개체는 Object 인터페이스를 구현합니다.
는 Object
인터페이스를 구현하는 Named 유형이 있습니다 그것은 NumMethods
라는 메소드가 있습니다. 당신이 더 가고 싶은 경우 등에도 Struct, Slice에 의해 구현 된 types.Type
자사의 기본 유형을 볼 수 있도록
package main
import (
"fmt"
"go/importer"
"go/types"
)
func main() {
pkg, err := importer.Default().Import("time")
if err != nil {
fmt.Printf("error: %s\n", err.Error())
return
}
scope := pkg.Scope()
for _, name := range scope.Names() {
if name == "Time" {
obj := scope.Lookup(name)
if tn, ok := obj.Type().(*types.Named); ok {
fmt.Printf("%#v\n", tn.NumMethods())
}
}
}
}
다음
는 *types.Named
는 Type 인터페이스를 구현