O que é reflexão?
Reflexão refere -se ao método de análise e inspeção de variáveis e seus valores durante o tempo de execução. É uma técnica muito útil ao lidar com componentes abstratos de uma estrutura. Isso não significa que esteja limitado a estruturas. Vamos discutir vários componentes da reflexão em Golang.
Importações necessárias
Em Go, a capacidade de executar a reflexão é fornecida usando o pacote refletir. Portanto, precisamos importá -lo antes de usar. Você pode importá -lo como mostrado no trecho abaixo:
importar "refletir"Uma vez importado, você pode começar a usar os métodos e funcionalidades fornecidos.
Tipo de()
Um método do pacote refletir é o tipo de (). Esta função permite determinar o tipo de variável.
Para usá -lo, podemos fazer:
Pacote principalO exemplo acima usa reflete.Método typeof () para verificar os tipos de dados de várias variáveis. A saída resultante é como mostrado:
Tipo => intValor de()
O reflete.Método ValueOf () Retorna o valor de uma variável específica. Um exemplo é como mostrado:
fmt.Println ("value =>", reflita.Valorof (var4))Isso deve retornar o valor da variável var4.
Saída:
Valor => [1 2 3]Cópia de()
O método de cópia é usado para copiar os elementos de uma fonte específica para um destino especificado. A função executará a operação de cópia até que o destino esteja cheio dos elementos da fonte.
A função retorna o número de elementos copiados da fonte para o destino.
Lembre -se de que o destino e a fonte devem ser do mesmo tipo.
Considere o exemplo mostrado abaixo:
Pacote principalNo exemplo acima, usamos o reflete.Valueof () lançar a variável para o seu tipo. Em seguida, usamos o método copy () para copiar os elementos do Dest para a variável SRC. A saída resultante é como mostrado:
Elementos copiados: 3Swapper ()
O método swapper () permite trocar elementos em uma fatia. Um exemplo é como mostrado abaixo:
lst: = [] int 1, 2, 3, 4, 5O exemplo acima troca a fatia do primeiro índice para o último. A saída é como mostrado:
Antes da troca: [1 2 3 4 5]Numfield ()
O método Numfield () retorna o número de campos dentro de uma determinada estrutura. Um exemplo é como mostrado:
Digite my_struct structO acima deve retornar o número de campos na estrutura. Saída:
4Campo()
O método de campo () retorna o nome e o tipo de dados de campos dentro de uma estrutura.
struct_1: = my_struct "a", 1, 3.14, falsoO programa acima retorna o nome dos campos na estrutura e seus tipos de dados. Saída:
string field_1Makechan ()
O método makechan () cria um canal de tamanho de tipo especificado e buffers de tamanho. Exemplo:
str str chan stringO acima deve criar um canal do tipo Chan e um tamanho de buffer de 256. A saída resultante é como mostrado:
Tipo de canal: chanMakemap ()
Como o nome sugere, a função makemap () cria um mapa do tipo de dados definido.
Veja o exemplo abaixo:
var str mapa [string] stringIsso cria um novo mapa. Saída:
Tipo => mapaConclusão
Neste guia, arranhamos a superfície de usar o pacote refletir em Go. Lembre -se de que o pacote oferece muito mais do que o que é discutido aqui.