Vai al contenuto principale
Pubblicato il

struct in Go

Condividi:

Introduzione

In Go, una "struct" è una collezione composta da campi che consente di raggruppare variabili di tipi diversi. Le struct sono estremamente utili per definire e creare tipi di dati personalizzati, fornendo un modo organizzato di rappresentare entità e i loro attributi.

Definire e Inizializzare le struct

Per definire una struct, utilizziamo la parola chiave type seguita dal nome della struct e dalla parola chiave struct:

type Persona struct {
  Nome  string
  Eta   int
  Email string
}

Per inizializzare una struct, possiamo assegnare valori ai suoi campi usando la sintassi delle parentesi graffe:

p := Persona{"Nelson", 28, "[email protected]"}

Oppure usando i nomi dei campi:

p := Persona{
  Nome:  "Nelson",
  Eta:   28,
  Email: "[email protected]",
}

Accesso ai Campi della struct

Per accedere a un campo specifico della struct, utilizziamo l'operatore .:

nome := p.Nome  // "Nelson"
eta  := p.Eta   // 28

Struct Annidate

È possibile avere struct all'interno di altre struct, una caratteristica che può essere utile per rappresentare relazioni gerarchiche o complesse:

type Indirizzo struct {
  Via    string
  Citta  string
  Paese  string
}

type Persona struct {
  Nome     string
  Eta      int
  Luogo    Indirizzo
}

Puntatori alle struct

Come altre variabili in Go, le struct possono essere referenziate anche tramite puntatori:

puntatoreSuPersona := &p
puntatoreSuPersona.Nome = "Pietro"  // Modifica il nome nella struct originale

Metodi e struct

In Go, possiamo definire metodi specifici per le struct, consentendo che operazioni specifiche vengano eseguite con o su quelle struct:

func (p Persona) Presentarsi() string {
  return "Ciao, mi chiamo " + p.Nome
}

messaggio := p.Presentarsi()  // "Ciao, mi chiamo Nelson"

Conclusione

Le struct in Go sono strumenti potenti e flessibili che ci permettono di creare rappresentazioni chiare e organizzate di entità e dei loro attributi. Padroneggiare le struct è fondamentale per qualsiasi sviluppatore Go che desideri creare applicazioni robuste e ben strutturate.

Happy coding!