Resumen - Almacenamiento clave-valor
Parte de la sección Fundamentos del Journey de GO de Coddy — lección 93 de 109.
Desafío
Fácil¡Practiquemos el uso de mapas con un sencillo contador de palabras!
Tu tarea es implementar un programa que cuente cuántas veces aparece cada palabra en una lista de palabras.
Requisitos:
- Completa la función
addWord()que añade una palabra al mapa contador - Completa la función
getCount()que devuelve el recuento de una palabra específica - Completa la función
removeWord()que elimina una palabra del contador
Este es un breve repaso de cómo usar mapas como almacenamiento de clave-valor.
Nota: La salida mostrará los recuentos de palabras en orden alfabético para mayor consistencia.
Pruébalo tú mismo
package main
import (
"fmt"
"sort"
)
// addWord agrega una palabra al mapa contador
func addWord(counter map[string]int, word string) {
// Tu código aquí
}
// getCount devuelve el conteo para una palabra específica
func getCount(counter map[string]int, word string) int {
// Tu código aquí
return 0
}
// removeWord elimina una palabra del contador
// Devuelve true si la palabra fue encontrada y eliminada
func removeWord(counter map[string]int, word string) bool {
// Tu código aquí
return false
}
// printWordCounts imprime los conteos de palabras en orden alfabético
func printWordCounts(counter map[string]int) {
// Obtener todas las claves (palabras) del mapa
words := make([]string, 0, len(counter))
for word := range counter {
words = append(words, word)
}
// Ordenar las palabras alfabéticamente
sort.Strings(words)
// Imprimir cada palabra y su conteo en orden ordenado
for _, word := range words {
fmt.Printf("%s: %d\n", word, counter[word])
}
}
func main() {
// Inicializar el mapa contador de palabras
wordCounter := make(map[string]int)
// Agregar algunas palabras
words := []string{"apple", "banana", "apple", "orange", "banana", "apple"}
for _, word := range words {
addWord(wordCounter, word)
}
// Imprimir los conteos de palabras
fmt.Println("Word counts:")
printWordCounts(wordCounter)
// Obtener el conteo para palabras específicas
fmt.Printf("\nCount for 'apple': %d\n", getCount(wordCounter, "apple"))
fmt.Printf("Count for 'grape': %d\n", getCount(wordCounter, "grape"))
// Eliminar una palabra
removed := removeWord(wordCounter, "banana")
fmt.Printf("\nRemoved 'banana': %v\n", removed)
// Intentar eliminar una palabra inexistente
removed = removeWord(wordCounter, "grape")
fmt.Printf("Removed 'grape': %v\n", removed)
// Imprimir los conteos finales de palabras
fmt.Println("\nFinal word counts:")
printWordCounts(wordCounter)
}Todas las lecciones de Fundamentos
4Operadores de comparación y lógicos
Operadores de comparación - Parte 1Operadores de comparación - Parte 2Operador lógico ANDOperador lógico OROperador lógico NOTConceptos básicos de precedencia de operadoresResumen: Realizar comparaciones7Flujo de control: Bucles
Explicación del bucle `for`Bucle `for` - BásicoBucle `for` - Solo condiciónLa palabra clave `break`La palabra clave `continue`Bucles anidadosResumen - Repetición de acciones2Variables y tipos de datos básicos
¿Qué es una variable?Inferencia de tipos con `:=`Enteros (int)Números de punto flotanteBooleanosStringsValores ceroConstantesConvenciones de nomenclaturaResumen - Variables y tipos5Entrada y salida básica
Salida con formatoVerbos de formatoImpresión de tiposObtener entrada básica del usuarioResumen: Entrada y salida8Funciones
Comprendiendo las funcionesDeclaración de una funciónLlamada a funcionesParámetros de funciónRetorno de un solo valorRetorno de múltiples valoresValores de retorno con nombreConceptos básicos del alcance de las funcionesResumen: Creando código reutilizable3Operadores básicos
Operadores aritméticosOperador de divisiónEl operador móduloOperador de asignaciónOperadores de asignación compuestaIncremento y decrementoResumen - Cálculos6Flujo de control: Condicionales
La sentencia `if`La palabra clave `else`La palabra clave `else if`Sombreado de variables en `if`Inicialización de variablesLa sentencia `switch``switch` con expresiones`switch` sin expresiónLa palabra clave `fallthrough`Resumen: Toma de decisiones9Punteros
¿Qué es un puntero?Declaración de variables de punteroEl operador de dirección (Address-Of)Desreferenciación de punterosUso de punteros en funcionesPunteros NilResumen: Entendiendo los punteros12Tipos compuestos: Mapas
Introducción a los MapasDeclaración de literales de mapaCreación de mapas con `make`Añadir y actualizar clave-valorAcceso a los valores del mapaComprobar la existencia de clavesEliminar entradas del mapaLongitud del mapaIterar sobre mapasResumen - Almacenamiento clave-valor