Recuperando Reflect.Type de um tipo ou seu nome em Go
Esta questão explora se é possível obter o reflect.Type de um tipo personalizado, como "t1" no exemplo dado, sem instanciá-lo ou usar seu nome como uma string.
Em relação à primeira parte da pergunta, sim, é possível conseguir isso usando um digitado nil . O trecho de código a seguir demonstra essa abordagem:
var v1 reflect.Type = reflect.TypeOf((*t1)(nil)).Elem()
Neste exemplo, aproveitamos um tipo ponteiro nil para obter o tipo de tempo de execução de "t1."
Quanto à segunda parte, recuperar o reflect.Type diretamente do nome de um tipo não é compatível com Go. O tempo de execução não mantém um mapa de todos os tipos no binário atual, o que seria necessário para conseguir isso.
Embora seja concebível criar um pacote de registro de tipo e registrar tipos para pesquisa por string, isso inevitavelmente estar incompleto. Além disso, tipos anônimos apresentam complicações, pois seus nomes podem não ser exclusivos.
Embora Go possa, teoricamente, oferecer uma função para recuperar um tipo com base em seu nome, é improvável que esse recurso seja implementado em um futuro próximo.
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