En aquest tema, aprendrem sobre les structs en Go, una característica fonamental per a la programació orientada a objectes en aquest llenguatge. Les structs ens permeten agrupar dades relacionades en una sola entitat, facilitant la gestió i manipulació de dades complexes.
Continguts
Què és una Struct?
Una struct (abreviatura de "structure") és un tipus de dades compost que permet agrupar diferents tipus de dades sota un mateix nom. Cada element dins d'una struct es coneix com a camp.
Definició d'una Struct
Per definir una struct en Go, utilitzem la paraula clau type
seguida del nom de la struct i la paraula clau struct
. Aquí teniu un exemple:
En aquest exemple, hem definit una struct anomenada Persona
amb tres camps: Nom
, Edat
i Correu
.
Inicialització de Structs
Hi ha diverses maneres d'inicialitzar una struct en Go:
Inicialització Literal
persona1 := Persona{ Nom: "Joan", Edat: 30, Correu: "[email protected]", }
Inicialització per Ordre de Camps
persona2 := Persona{"Maria", 25, "[email protected]"}
Inicialització amb Valors Zero
En aquest cas, tots els camps de persona3
tindran els valors zero dels seus respectius tipus (""
per a strings, 0
per a ints, etc.).
Accés als Camps d'una Struct
Per accedir o modificar els camps d'una struct, utilitzem l'operador de punt (.
):
Metodes en Structs
Podem definir mètodes per a structs, que són funcions associades a un tipus de struct. Aquí teniu un exemple:
En aquest exemple, hem definit un mètode Saludar
per a la struct Persona
. Aquest mètode retorna una salutació utilitzant el camp Nom
.
Exemples Pràctics
Exemple 1: Definició i Inicialització
package main import "fmt" type Persona struct { Nom string Edat int Correu string } func main() { persona := Persona{ Nom: "Anna", Edat: 28, Correu: "[email protected]", } fmt.Println(persona) }
Exemple 2: Mètodes en Structs
package main import "fmt" type Persona struct { Nom string Edat int Correu string } func (p *Persona) Saludar() string { return "Hola, em dic " + p.Nom } func main() { persona := Persona{ Nom: "Pere", Edat: 35, Correu: "[email protected]", } fmt.Println(persona.Saludar()) }
Exercicis
Exercici 1: Definició i Inicialització
Defineix una struct anomenada Cotxe
amb els camps Marca
, Model
i Any
. Inicialitza una instància de Cotxe
i imprimeix els seus valors.
Exercici 2: Mètodes en Structs
Defineix un mètode anomenat Descripcio
per a la struct Cotxe
que retorni una cadena amb la marca, el model i l'any del cotxe. Utilitza aquest mètode per imprimir la descripció d'un cotxe.
Solucions
Solució Exercici 1
package main import "fmt" type Cotxe struct { Marca string Model string Any int } func main() { cotxe := Cotxe{ Marca: "Toyota", Model: "Corolla", Any: 2020, } fmt.Println(cotxe) }
Solució Exercici 2
package main import "fmt" type Cotxe struct { Marca string Model string Any int } func (c *Cotxe) Descripcio() string { return fmt.Sprintf("Marca: %s, Model: %s, Any: %d", c.Marca, c.Model, c.Any) } func main() { cotxe := Cotxe{ Marca: "Honda", Model: "Civic", Any: 2018, } fmt.Println(cotxe.Descripcio()) }
Conclusió
Les structs són una eina poderosa en Go per agrupar dades relacionades i treballar amb elles de manera organitzada. Hem après a definir structs, inicialitzar-les, accedir als seus camps i definir mètodes per a elles. Amb aquests coneixements, estem preparats per abordar estructures de dades més complexes i escriure codi més organitzat i mantenible.
Curs de Programació en Go
Mòdul 1: Introducció a Go
- Introducció a Go
- Configuració de l'Entorn Go
- El Teu Primer Programa en Go
- Sintaxi i Estructura Bàsiques
Mòdul 2: Conceptes Bàsics
Mòdul 3: Estructures de Dades Avançades
Mòdul 4: Gestió d'Errors
Mòdul 5: Concurrència
Mòdul 6: Temes Avançats
Mòdul 7: Desenvolupament Web amb Go
Mòdul 8: Treballant amb Bases de Dades
Mòdul 9: Desplegament i Manteniment
- Construcció i Desplegament d'Aplicacions Go
- Registre
- Monitorització i Optimització del Rendiment
- Millors Pràctiques de Seguretat