encontrando tipos de pacote exportados dinamicamente
em contraste com os recursos de descoberta de tipo limitado no pacote refletir, este artigo explora métodos alternativos para descobrir todos os tipos de pacote (particularmente as estruturas) no tempo. Posterior)
nas versões Go 1.5 e subsequentes, os tipos e pacotes de importadores introduzem uma maneira poderosa de inspecionar pacotes. Veja como você pode usá -los:
import ( "FMT" "Go/Importador" ) func main () { pkg, err: = import.default (). importar ("tempo") se err! = nil { fmt.printf ("erro: %s \ n", err.error ()) retornar } para _, declname: = range pkg.scope (). names () { fmt.println (declname) } }
import ( "fmt" "go/importer" ) func main() { pkg, err := importer.Default().Import("time") if err != nil { fmt.Printf("error: %s\n", err.Error()) return } for _, declName := range pkg.Scope().Names() { fmt.Println(declName) } }
antes da versão 1.5, o pacote AST pode ser utilizado para analisar e inspecionar o código -fonte do tipo Discovery. No entanto, essa abordagem é mais complexa e pode exigir código de análise adicional. Por exemplo, em um utilitário de geração de código, ele permite a identificação de tipos que incorporam um tipo especificado. Isso permite a criação de funções de teste com base nos tipos descobertos sem exigir etapas manuais de re-geração. Isso permite a introspecção de tipo mais flexível e pode ser alavancada em vários aplicativos, incluindo geração de código e estruturas de teste.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3