Golang에서 패키지 내의 모든 구조체 얻기
AST 표현에 액세스하여 패키지 내의 모든 구조체를 열거할 수 있습니다. 한 가지 접근 방식은 Go 저장소를 복제하고 관련 데이터를 추출해야 하는 패키지 소스 코드를 구문 분석하는 것입니다.
아래 코드는 AST 구문 분석기를 사용하여 이를 달성하는 방법을 간략하게 설명합니다.
<code class="go">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; } }</code>
Go의 linter의 또 다른 예는 비슷한 접근 방식을 보여줍니다.
<code class="go">case *ast.StructType: for _, f := range v.Fields.List { for _, id := range f.Names { check(id, "struct field") } }</code>
AST 표현을 탐색하면 특정 패키지 내의 모든 구조체에 대한 정보를 수집하여 원하는 이름이나 인터페이스 목록을 제공할 수 있습니다.
위 내용은 Golang의 패키지 내의 모든 구조체 목록을 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!