Resumen - Estructuras de datos personalizadas
Parte de la sección Fundamentos del Journey de GO de Coddy. Lección 101 de 109.
Desafío
FácilCreemos una estructura de datos personalizada sencilla para repasar lo que hemos aprendido sobre las estructuras en Go.
En este desafío, crearás una estructura de datos básica Counter que pueda:
- Realizar un seguimiento de un valor de conteo
- Incrementar el conteo
- Disminuir el conteo
- Restablecer el conteo a cero
Completa el código implementando los métodos que faltan para la estructura Counter.
Pruébalo tú mismo
package main
import (
"fmt"
)
// Counter es una estructura de datos de contador simple
type Counter struct {
value int
name string
}
// NewCounter crea un nuevo contador con un nombre dado
func NewCounter(name string) Counter {
return Counter{
value: 0,
name: name,
}
}
// Increment aumenta el contador en 1
func (c *Counter) Increment() {
// Añade código para incrementar el valor del contador
}
// Decrement disminuye el contador en 1 (pero no por debajo de 0)
func (c *Counter) Decrement() {
// Añade código para decrementar el valor del contador
// Asegúrate de que el valor no baje de 0
}
// Reset vuelve a poner el contador a 0
func (c *Counter) Reset() {
// Añade código para restablecer el contador a 0
}
// Value devuelve el conteo actual
func (c Counter) Value() int {
// Añade código para devolver el valor actual
return 0 // Reemplaza esto
}
// String devuelve una representación en cadena del contador
func (c Counter) String() string {
return fmt.Sprintf("%s: %d", c.name, c.value)
}
func main() {
// Crea un nuevo contador llamado "Visitors"
visitors := NewCounter("Visitors")
// Incrementa el contador unas cuantas veces
visitors.Increment()
visitors.Increment()
visitors.Increment()
// Imprime el conteo actual
fmt.Println(visitors)
fmt.Println("Current value:", visitors.Value())
// Decrementa el contador
visitors.Decrement()
fmt.Println(visitors)
// Restablece el contador
visitors.Reset()
fmt.Println(visitors)
// Prueba que el contador no baje de cero
visitors.Decrement()
fmt.Println(visitors)
}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 acciones10Tipos compuestos: Arrays
Introducción a los ArraysDeclaración de ArraysInicialización de ArraysAcceso a elementos de un ArrayLongitud del Array con `len`Iterar sobre ArraysArrays multidimensionales13Tipos compuestos: Structs
Definición de tipos personalizadosCreación de instancias de StructsAcceso a campos de StructsPunteros a StructsInicialización de StructsStructs embebidosStructs anónimosResumen - Estructuras de datos personalizadas2Variables 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 decisionesPractica por tu cuenta: Compilador de Go online