Struct incorporati
Fa parte della sezione Fondamenti del percorso GO di Coddy. Lezione 99 di 109.
Go ti permette di incorporare una struct in un'altra, creando relazioni di composizione. Questo è l'approccio di Go all'ereditarietà.
Definisci due struct, una incorporata nell’altra:
type Address struct {
city string
state string
}
type Person struct {
name string
age int
Address // struct incrustada (sin nombre de campo)
}
func main() {
person := Person{
name: "Alice",
age: 30,
Address: Address{city: "Portland", state: "Oregon"},
}
// Accede a los campos directamente
fmt.Println(person.city) // Accede al campo incrustado
}
L'output mostra che possiamo accedere direttamente ai campi della struct incorporata:
PortlandSfida
PrincipianteIn questa sfida, farai pratica con l’uso delle struct incorporate (composizione) in Go.
Abbiamo due struct: Address e Person. La struct Person dovrebbe incorporare la struct Address, così che una persona possa accedere direttamente ai campi dell’indirizzo.
Il tuo compito è completare la definizione della struct Person per incorporare la struct Address, quindi accedere direttamente ai campi dell’indirizzo dall’istanza della persona.
Provalo tu
package main
import "fmt"
// La struct Address contiene informazioni sulla posizione
type Address struct {
Street string
City string
ZipCode string
}
// La struct Person dovrebbe incorporare la struct Address
type Person struct {
Name string
Age int
// TODO: Incorpora qui la struct Address (in una sola riga)
}
func main() {
// Crea una nuova persona con le informazioni sull'indirizzo
person := Person{
Name: "Alice",
Age: 30,
Address: Address{
Street: "123 Main St",
City: "Wonderland",
ZipCode: "12345",
},
}
// Stampa le informazioni sulla persona, incluso l'indirizzo
fmt.Println("Name:", person.Name)
fmt.Println("Age:", person.Age)
// TODO: Stampa i campi dell'indirizzo direttamente dall'istanza di Person
// (senza usare person.Address.Street, ecc.)
fmt.Println("Street:", person.Street)
fmt.Println("City:", person.City)
fmt.Println("ZipCode:", person.ZipCode)
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori di confronto e logici
Operatori di confronto - Parte 1Operatori di confronto - Parte 2Operatore AND logicoOperatore OR logicoOperatore NOT logicoNozioni di base sulla precedenza degli operatoriRiepilogo - Eseguire confronti7Flusso di controllo: cicli
Come funziona il ciclo `for`Ciclo `for` - baseCiclo `for` - solo condizioneLa parola chiave `break`La parola chiave `continue`Cicli annidatiRiepilogo - ripetere le azioni2Variabili e tipi di dati di base
Che cos'è una variabileInferenza del tipo con `:=`Numeri interi (int)Numeri in virgola mobileValori booleaniStringheValori zeroCostantiConvenzioni di denominazioneRiepilogo: variabili e tipi5Input/output di base
Output formattatoVerbi di formattazioneVisualizzazione dei tipiAcquisire input di base dall’utenteRiepilogo - Input e output8Funzioni
Capire le funzioniDichiarare una funzioneChiamare le funzioniParametri delle funzioniRestituire un singolo valoreRestituire più valoriValori restituiti con nomeFondamenti dell'ambito delle funzioniRiepilogo - Creare codice riutilizzabile3Operatori di base
Operatori aritmeticiOperatore di divisioneL'operatore moduloOperatore di assegnazioneOperatori di assegnazione compostaIncremento e decrementoRiepilogo - Calcoli6Flusso di controllo: condizioni
L'istruzione `if`La parola chiave `else`La parola chiave `else if`Ombreggiamento delle variabili in `if`Inizializzare le variabiliL'istruzione `switch``switch` con espressioni`switch` senza espressioneLa parola chiave `fallthrough`Riepilogo: prendere decisioni9Puntatori
Che cos’è un puntatore?Dichiarare variabili puntatoreL’operatore indirizzoDereferenziare i puntatoriUsare i puntatori nelle funzioniPuntatori nilRipasso - Capire i puntatori12Tipi compositi: mappe
Introduzione alle mappeDichiarare i letterali delle mappeCreare mappe con `make`Aggiungere e aggiornare coppie chiave-valoreAccedere ai valori delle mappeVerificare l'esistenza di una chiaveEliminare elementi dalle mappeLunghezza delle mappeIterare sulle mappeRiepilogo - Archiviazione chiave-valoreEsercitati da solo: Compilatore Go online