Menu
Coddy logo textTech

Resumen - Estructuras de datos personalizadas

Parte de la sección Fundamentos del Journey de GO de Coddy — lección 101 de 109.

challenge icon

Desafío

Fácil

Vamos a crear una estructura de datos personalizada sencilla para recapitular lo que hemos aprendido sobre las structs en Go.

En este desafío, crearás una estructura de datos Counter básica que pueda:

  1. Rastrear un valor de conteo
  2. Incrementar el conteo
  3. Decrementar el conteo
  4. Reiniciar el conteo a cero

Completa el código implementando los métodos que faltan para la struct 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