Golang에서 패키지 구조 검색
GoLang 패키지에 포함된 모든 구조를 이름이나 인터페이스 목록으로 열거할 수 있나요?
예:
struct := list("fmt")
예상 출력:
Formatter GoStringer Scanner State Stringer
가장 최적의 접근 방식은 Go 소스 코드를 구문 분석하는 것입니다(hg clone 명령을 사용하여 복제할 수 있음). https://code.google.com/p/go/), 특히 ast.StructType 인스턴스를 추출합니다.
이 프로세스는 예쁜 프린터에서 예시됩니다.
func (P *Printer) Type(t *AST.Type) int { separator := semicolon; switch t.form { case AST.STRUCT, AST.INTERFACE: switch t.form { case AST.STRUCT: P.String(t.pos, "struct"); case AST.INTERFACE: P.String(t.pos, "interface"); } if t.list != nil { P.separator = blank; P.Fields(t.list, t.end); } separator = none;
비슷한 맥락에서 , go/lint 도구는 lint.go에서 유사한 기능을 수행합니다.
case *ast.StructType: for _, f := range v.Fields.List { for _, id := range f.Names { check(id, "struct field") } }
위 내용은 GoLang 패키지의 구조를 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!