Formazione
Modulo
Usare tipi di dati e struct, matrici, slice e mappe in Go - Training
Informazioni su struct, matrici, slice e mappe. Comprendere la differenza tra questi elementi e quando usare un tipo rispetto all'altro.
Questo browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Diverse categorie di matrici sono state definite in base alle caratteristiche delle prestazioni, principalmente se la matrice può essere copiata da blocchi.
Per alcune categorie, ad esempio una matrice a dimensioni fisse, esistono due tipi di descrittori di matrice; sono indicati da una correzione nel nome del token FC principale.
Formato carattere | Descrizione |
---|---|
SM | Le dimensioni totali del tipo possono essere rappresentate in un int a 16 bit senza segno. |
LG | Le dimensioni totali del tipo devono essere rappresentate a lungo un segno a 32 bit. |
Campi comuni alle matrici:
total_size
Dimensioni totali della matrice in memoria, in byte. Questa è la stessa delle dimensioni del filo dopo l'allineamento. La dimensione totale viene calcolata per le categorie per cui il problema di riempimento non esiste e la dimensione è la dimensione effettiva della matrice.
element_size
Dimensioni totali in memoria di un singolo elemento della matrice, inclusa la spaziatura interna (questo può verificarsi solo per matrici complesse).
element_description
Descrizione del tipo di elemento della matrice.
pointer_layout
Per altre informazioni, vedere l'argomento Layout puntatore .
Una stringa di formato matrice di dimensioni fisse viene generata per le matrici con dimensioni note e pertanto può essere copiata in blocco nel buffer di marshalling. I due formati di descrittore matrice fissi sono i seguenti.
FC_SMFARRAY alignment<1>
total_size<2>
[pointer_layout<>]
element_description<>
FC_END
e
FC_LGFARRAY alignment<1>
total_size<4>
[pointer_layout<>]
element_description<>
FC_END
Una matrice conforme può essere copiata in blocchi dopo che la dimensione della matrice è nota.
FC_CARRAY alignment<1>
element_size<2>
conformance_description<>
[pointer_layout<>]
element_description<>
FC_END
Il conformance_description<> è un descrittore di correlazione e ha 4 o 6 byte a seconda che venga usato /robust .
Una matrice conforme può anche essere copiata da blocchi.
FC_CVARRAY alignment<1>
element_size<2>
conformance_description<>
variance_description<>
[pointer_layout<>]
element_description<>
FC_END
Il conformance_description e variance_description<><> è un descrittore di correlazione e ha 4 o 6 byte a seconda che venga usato /robust.
Le matrici variabili hanno due possibilità a seconda delle dimensioni della matrice.
FC_SMVARRAY alignment<1>
total_size<2>
number_elements<2>
element_size<2>
variance_description<>
[pointer_layout<>]
element_description<>
FC_END
FC_LGVARRAY alignment<1>
total_size<4>
number_elements<4>
element_size<2>
variance_description<4>
[pointer_layout<>]
element_description<>
FC_END
Il variance_description<> è un descrittore di correlazione e ha 4 o 6 byte a seconda dell'uso di /robust .
Per le matrici variabili incorporate all'interno di una struttura, il campo offset<2> della variance_description<> è un offset relativo dalla posizione della matrice variabile nella struttura alla varianza che descrive il campo. L'offset è in genere relativo all'inizio della struttura.
Una matrice complessa è qualsiasi matrice con un elemento che impedisce la copia a blocchi e, ad esempio, deve essere eseguita un'azione aggiuntiva. Questi elementi rendono complessa una matrice:
La descrizione della matrice complessa è la seguente:
FC_BOGUS_ARRAY alignment<1>
number_of_elements<2>
conformance_description<>
variance_description<>
element_description<>
FC_END
Il campo number_of_elements<2> è zero se la matrice è conforme.
Il conformance_description e variance_description<><> è un descrittore di correlazione e ha 4 o 6 byte a seconda che venga usato /robust. Se la matrice ha conformità e/o varianza, i campi conformance_description e/o variance_description<> hanno descrizioni valide, altrimenti i primi 4 byte del descrittore di correlazione vengono impostati su 0xFFFFFFFF<>. I flag, quando presenti, sono impostati su zero.
Formazione
Modulo
Usare tipi di dati e struct, matrici, slice e mappe in Go - Training
Informazioni su struct, matrici, slice e mappe. Comprendere la differenza tra questi elementi e quando usare un tipo rispetto all'altro.