Struct incorporati
Fa parte della sezione Fondamenti del percorso GO di Coddy. Lezione 99 di 109.
Go ti consente di incorporare una struct all'interno di 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 // embedded struct (no field name)
}
func main() {
person := Person{
name: "Alice",
age: 30,
Address: Address{city: "Portland", state: "Oregon"},
}
// Access fields directly
fmt.Println(person.city) // Access embedded field
}
L'output mostra che possiamo accedere direttamente ai campi della struct incorporata:
PortlandSfida
PrincipianteIn questa sfida, ti eserciterai a usare le 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. Le istruzioni di stampa in main leggono già direttamente i campi dell'indirizzo dalla persona (person.Street, person.City, person.ZipCode); verranno compilate una volta incorporata Address.
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 deve incorporare la struct Address
type Person struct {
Name string
Age int
// TODO: Incorpora qui la struct Address (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 della persona, incluso l'indirizzo
fmt.Println("Name:", person.Name)
fmt.Println("Age:", person.Age)
// Stampa i campi dell'indirizzo direttamente dall'istanza di Person
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