- Le strutture Golang ci consentono di raggruppare i dati insieme.
- Sono simili alle strutture di altri linguaggi di programmazione.
- Le strutture sono tipi di dati definiti dall'utente e consentono di creare tipi personalizzati.
- Le strutture possono contenere qualsiasi tipo di dati, comprese altre strutture.
Definizione della struttura:
"vai."
tipo nome_struttura struttura {
nome_membro tipo1
nome_membro tipo2
...
nome_membro tipoN
}
```
- Definisce una struttura denominata "nome_struttura" con membri "nome_membro". Ogni membro ha un tipo, che può essere qualsiasi tipo Go valido.
Creazione di strutture:
"vai."
var nome_struttura =tipo_struttura {
nome_membro1:valore1,
nome_membro2:valore2,
...
nome_membroN:valoreN
}
```
- Questo crea una variabile di tipo `structure_name` e inizializza i suoi membri con i valori specificati.
Accesso ai membri:
- Per accedere a un membro della struttura, utilizzare l'operatore punto:`nome_struttura.nome_membro`.
Esempio:
"vai."
// Definisce una struttura denominata persona con nome ed età dei membri.
tipo persona struttura {
Stringa del nome
Età int
}
funzione principale() {
// Crea una persona chiamata "John Doe".
persona1 :=persona{"John Doe", 30}
// Stampa il nome e l'età di John.
fmt.Println("Nome:", persona1.Nome)
fmt.Println("Età:", persona1.Età)
}
```
Strutture denominate:
- Se una struttura contiene campi con tipi di dati di base, può essere dichiarata senza una parola chiave struct.
"vai."
digitare MyStruct struttura {
un int
b float32
stringa c
}
digita la tua struttura {
f int 'json:"primo"'
l stringa 'json:"ultimo"'
}
```
- Sia per "MyStruct" che per "your struct" sopra, la parola chiave struct è facoltativa
- È possibile utilizzare strutture anonime per creare tipi di dati ad hoc senza definire esplicitamente un tipo di struttura.
- Quando una struttura anonima viene utilizzata come campo di un'altra struttura o come elemento di una porzione/mappa, il tipo del campo è la struttura anonima e il tag del campo è il nome del tipo.
"vai."
tipo Persona struttura {
stringa del nome
età int
}
```
- In alternativa, è possibile utilizzare strutture anonime per istanziare una struttura senza definire un tipo di struttura.
"vai."
var persona =struttura {
stringa del nome
età int
}{nome:"Bob", età:20}
```
- In questo caso, la variabile persona di tipo `struct{ nome stringa; age int }` viene creato e inizializzato.
- Incorporare una struttura in un'altra struttura consente una forma di ereditarietà in Go.
"vai."
tipo Persona struttura {
stringa del nome
età int
}
tipo Dipendente struttura {
stipendio int
Persona
}
```
- Qui `Employee` incorpora `Person` quindi una variabile `Employee` includerà i campi di `Person` (nome ed età) così come i propri campi.
"vai."
emp :=Dipendente{stipendio:100000, Persona:Persona{nome:"John", età:30}}
fmt.Println(emp.stipendio) // 100000
fmt.Println(emp.name) // Giovanni
```
- I campi della struttura incorporata vengono promossi alla struttura esterna (contenente) come se fossero dichiarati nella struttura contenente. Qui è ora possibile accedere ai campi "name" e "age" di "Person" sulla variabile "Employee" (`emp`).
- È possibile allegare tag ai campi della struttura per fornire informazioni aggiuntive. Questi tag vengono utilizzati dalla riflessione e dai codificatori/decodificatori.
"vai."
tipo Persona struttura {
stringa del nome `json:"nome"` // tag json
età int `xml:"età"` // tag xml
}
```
- I tag sono racchiusi tra apici inversi ('`') se contengono spazi o altri caratteri speciali.
- Le strutture forniscono un modo per raggruppare insieme i dati correlati e creare tipi di dati personalizzati in Go.
- È possibile utilizzare strutture con nome e anonime a seconda della situazione e l'incorporamento consente una forma di ereditarietà.
- È possibile allegare tag ai campi della struttura per metadati aggiuntivi e compatibilità con le librerie standard.
Domanda © www.354353.com