Menu
Coddy logo textTech

Riepilogo - Strutture dati personalizzate

Fa parte della sezione Fondamenti del percorso GO di Coddy. Lezione 101 di 109.

challenge icon

Sfida

Facile

Creiamo una semplice struttura dati personalizzata per riepilogare ciò che abbiamo imparato sulle struct in Go.

In questa sfida, creerai una struttura dati di base Counter che può:

  1. Tenere traccia di un valore di conteggio
  2. Incrementare il conteggio
  3. Decrementare il conteggio
  4. Azzerare il conteggio

Completa il codice implementando i metodi mancanti per la struct Counter.

Provalo tu

package main

import (
	"fmt"
)

// Counter è una semplice struttura dati per un contatore
type Counter struct {
	value int
	name  string
}

// NewCounter crea un nuovo contatore con il nome specificato
func NewCounter(name string) Counter {
	return Counter{
		value: 0,
		name:  name,
	}
}

// Increment aumenta il contatore di 1
func (c *Counter) Increment() {
	// Aggiungi il codice per incrementare il valore del contatore
}

// Decrement diminuisce il contatore di 1 (ma non sotto 0)
func (c *Counter) Decrement() {
	// Aggiungi il codice per decrementare il valore del contatore
	// Assicurati che il valore non scenda sotto 0
}

// Reset riporta il contatore a 0
func (c *Counter) Reset() {
	// Aggiungi il codice per riportare il contatore a 0
}

// Value restituisce il conteggio corrente
func (c Counter) Value() int {
	// Aggiungi il codice per restituire il valore corrente
	return 0 // Sostituisci questo
}

// String restituisce una rappresentazione del contatore come stringa
func (c Counter) String() string {
	return fmt.Sprintf("%s: %d", c.name, c.value)
}

func main() {
	// Crea un nuovo contatore chiamato "Visitors"
	visitors := NewCounter("Visitors")
	
	// Incrementa il contatore alcune volte
	visitors.Increment()
	visitors.Increment()
	visitors.Increment()
	
	// Stampa il conteggio attuale
	fmt.Println(visitors)
	fmt.Println("Current value:", visitors.Value())
	
	// Decrementa il contatore
	visitors.Decrement()
	fmt.Println(visitors)
	
	// Reimposta il contatore
	visitors.Reset()
	fmt.Println(visitors)
	
	// Verifica che il contatore non scenda sotto zero
	visitors.Decrement()
	fmt.Println(visitors)
}

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Go online