Puntatori a struct
Fa parte della sezione Fondamenti del percorso GO di Coddy. Lezione 97 di 109.
Quando lavori con le struct, puoi creare puntatori a esse proprio come con gli altri tipi. Questo è utile per passare struct di grandi dimensioni in modo efficiente.
Definisci una struct Person e crea un puntatore a essa:
type Person struct {
name string
age int
}
func main() {
person := Person{name: "Alice", age: 30}
// Crea un puntero a la estructura
personPtr := &person
// Accede a los campos mediante el puntero
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)
}L'output mostra che possiamo accedere ai campi tramite il puntatore:
Alice
30Puoi anche modificare i campi tramite il puntatore:
personPtr.age = 31
fmt.Println(person.age) // Stampa: 31Sfida
PrincipianteIn questa sfida, ti eserciterai a lavorare con i puntatori a struct in Go. Hai una struct Person con i campi name e age. Il tuo compito è aggiornare le informazioni della persona usando un puntatore alla struct.
Il codice crea già una struct Person e un puntatore a essa. Devi modificare le informazioni della persona tramite il puntatore.
Provalo tu
package main
import "fmt"
// Struct Person con i campi name e age
type Person struct {
name string
age int
}
func main() {
// Crea una struct Person
person := Person{
name: "John",
age: 25,
}
// Crea un puntatore alla struct Person
personPtr := &person
// Stampa le informazioni originali della persona
fmt.Println("Original person:")
fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
// TODO: Usa il puntatore per cambiare il nome della persona in "Jane" e l'età in 30
// Suggerimento: puoi accedere ai campi di una struct tramite un puntatore usando la notazione con il punto
// Stampa le informazioni aggiornate della persona
fmt.Println("Updated person:")
fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
}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