Els maps són una estructura de dades fonamental en Go que permeten emmagatzemar parelles clau-valor. Són similars als diccionaris en altres llenguatges de programació com Python. En aquest tema, aprendrem com crear, inicialitzar, accedir i manipular maps en Go.
Continguts
Què és un Map?
Un map és una col·lecció no ordenada de parelles clau-valor, on cada clau és única. Els maps són molt útils per a emmagatzemar dades que necessiten ser ràpidament accessibles a través d'una clau.
Creació i Inicialització de Maps
Sintaxi Bàsica
Aquesta línia declara un map m
amb claus de tipus string
i valors de tipus int
. No obstant això, aquest map encara no està inicialitzat.
Inicialització amb make
També podem inicialitzar i declarar el map en una sola línia:
Inicialització amb Valors
Podem inicialitzar un map amb valors predefinits:
Accés i Modificació de Valors
Accés a Valors
Per accedir a un valor en un map, utilitzem la clau corresponent:
Modificació de Valors
Podem modificar el valor associat a una clau existent o afegir una nova parella clau-valor:
Eliminar Elements
Per eliminar una parella clau-valor d'un map, utilitzem la funció delete
:
Iteració sobre Maps
Podem iterar sobre un map utilitzant un bucle for
amb el rang (range
):
Exemples Pràctics
Exemple 1: Comptar Paraules
package main import ( "fmt" "strings" ) func main() { text := "hello world hello" words := strings.Fields(text) wordCount := make(map[string]int) for _, word := range words { wordCount[word]++ } for word, count := range wordCount { fmt.Println(word, count) } }
Exemple 2: Telèfons de Contacte
package main import "fmt" func main() { contacts := map[string]string{ "Alice": "123-456-7890", "Bob": "987-654-3210", "Charlie": "555-555-5555", } fmt.Println("Telèfon d'Alice:", contacts["Alice"]) contacts["Alice"] = "111-111-1111" fmt.Println("Nou telèfon d'Alice:", contacts["Alice"]) delete(contacts, "Bob") for name, phone := range contacts { fmt.Println(name, phone) } }
Exercicis Pràctics
Exercici 1: Comptar Caràcters
Escriu un programa que compti la freqüència de cada caràcter en una cadena de text.
Solució
package main import "fmt" func main() { text := "hello world" charCount := make(map[rune]int) for _, char := range text { charCount[char]++ } for char, count := range charCount { fmt.Printf("%c: %d\n", char, count) } }
Exercici 2: Llibreta d'Adreces
Crea un programa que emmagatzemi adreces de correu electrònic associades a noms de persones. Permet afegir, modificar i eliminar entrades, així com cercar una adreça de correu electrònic per nom.
Solució
package main import "fmt" func main() { addresses := make(map[string]string) // Afegir entrades addresses["Alice"] = "[email protected]" addresses["Bob"] = "[email protected]" // Modificar una entrada addresses["Alice"] = "[email protected]" // Eliminar una entrada delete(addresses, "Bob") // Cercar una adreça email, exists := addresses["Alice"] if exists { fmt.Println("Adreça d'Alice:", email) } else { fmt.Println("Alice no té una adreça registrada.") } // Iterar sobre totes les entrades for name, email := range addresses { fmt.Println(name, email) } }
Conclusió
Els maps són una eina poderosa en Go per emmagatzemar i gestionar dades de manera eficient. Hem après com crear, inicialitzar, accedir, modificar, eliminar i iterar sobre maps. A més, hem vist exemples pràctics i exercicis per reforçar els conceptes apresos. Amb aquesta base, estàs preparat per utilitzar maps en els teus projectes de Go.
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