Cos'è la riflessione?
La riflessione si riferisce al metodo di analisi e ispezione delle variabili e dei loro valori durante il runtime. È una tecnica molto utile quando si tratta di componenti astratti di una struttura. Ciò non significa che sia limitato alle strutture. Discutiamo di vari componenti della riflessione in Golang.
Importazioni richieste
In Go, la capacità di eseguire la riflessione è fornita utilizzando il pacchetto Reflect. Quindi, dobbiamo importarlo prima dell'uso. È possibile importarlo come mostrato nello snippet di seguito:
Importa "Rifletti"Una volta importato, è possibile iniziare a utilizzare i metodi e le funzionalità fornite.
Tipo di()
Un metodo dal pacchetto Reflect è il typeof (). Questa funzione consente di determinare il tipo di variabile.
Per usarlo, possiamo fare:
Pacchetto principaleL'esempio sopra usa si riflette.Metodo typeof () per verificare i tipi di dati di varie variabili. L'output risultante è come mostrato:
Tipo => intValore di()
Il riflesso.Il metodo valueof () restituisce il valore di una variabile specifica. Un esempio è come mostrato:
fmt.Println ("value =>", riflette.Valore di (var4))Questo dovrebbe restituire il valore della variabile VAR4.
Produzione:
Valore => [1 2 3]Copia()
Il metodo di copia viene utilizzato per copiare gli elementi di una fonte specifica in una destinazione specificata. La funzione eseguirà l'operazione di copia fino a quando la destinazione è piena degli elementi dalla fonte.
La funzione restituisce il numero di elementi copiati dall'origine alla destinazione.
Ricorda che la destinazione e l'origine devono essere dello stesso tipo.
Considera l'esempio mostrato di seguito:
Pacchetto principaleNell'esempio sopra, usiamo il riflesso.Valowof () per lanciare la variabile al suo tipo. Quindi utilizziamo il metodo COPY () per copiare gli elementi della DEST nella variabile SRC. L'output risultante è come mostrato:
Elementi copiati: 3Swapper ()
Il metodo Swapper () consente di scambiare elementi in una fetta. Un esempio è come mostrato di seguito:
lst: = [] int 1, 2, 3, 4, 5L'esempio sopra scambia la fetta dal primo indice all'ultimo. L'output è come mostrato:
Prima dello scambio: [1 2 3 4 5]Numfield ()
Il metodo Numfield () restituisce il numero di campi all'interno di una determinata struttura. Un esempio è come mostrato:
Digita my_struct structQuanto sopra dovrebbe restituire il numero di campi nella struttura. Produzione:
4Campo()
Il metodo field () restituisce il nome e il tipo di dati dei campi all'interno di una struttura.
struct_1: = my_struct "a", 1, 3.14, falseIl programma di cui sopra restituisce il nome dei campi nella struttura e nei loro tipi di dati. Produzione:
Field_1 StringMakechan ()
Il metodo Makechan () crea un canale di tipo e tamponi specificati. Esempio:
Var Str Chan StringQuanto sopra dovrebbe creare un canale di tipo Chan e una dimensione del buffer di 256. L'output risultante è come mostrato:
Tipo di canale: ChanMakemap ()
Come suggerisce il nome, la funzione makemap () crea una mappa del tipo di dati definito.
Prendi l'esempio di seguito:
Var Str MAP [String] StringQuesto crea una nuova mappa. Produzione:
Tipo => mappaConclusione
In questa guida, abbiamo graffiato la superficie dell'utilizzo del pacchetto di riflesso in Go. Tieni presente che il pacchetto offre molto più di quello che viene discusso qui.