Riepilogo - Strutture dati personalizzate
Fa parte della sezione Fondamenti del percorso GO di Coddy. Lezione 101 di 109.
Sfida
FacileCreiamo 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ò:
- Tenere traccia di un valore di conteggio
- Incrementare il conteggio
- Decrementare il conteggio
- 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
4Operatori di confronto e logici
Operatori di confronto - Parte 1Operatori di confronto - Parte 2Operatore AND logicoOperatore OR logicoOperatore NOT logicoNozioni di base sulla precedenza degli operatoriRiepilogo - Eseguire confronti7Flusso di controllo: cicli
Come funziona il ciclo `for`Ciclo `for` - baseCiclo `for` - solo condizioneLa parola chiave `break`La parola chiave `continue`Cicli annidatiRiepilogo - ripetere le azioni10Tipi compositi: array
Introduzione agli arrayDichiarare gli arrayInizializzare gli arrayAccedere agli elementi degli arrayLunghezza degli array con `len`Iterare sugli arrayArray multidimensionali13Tipi compositi: struct
Definire tipi personalizzatiCreare istanze di structAccedere ai campi di structPuntatori a structInizializzare structStruct incorporatiStruct anonimiRiepilogo - Strutture dati personalizzate2Variabili e tipi di dati di base
Che cos'è una variabileInferenza del tipo con `:=`Numeri interi (int)Numeri in virgola mobileValori booleaniStringheValori zeroCostantiConvenzioni di denominazioneRiepilogo: variabili e tipi5Input/output di base
Output formattatoVerbi di formattazioneVisualizzazione dei tipiAcquisire input di base dall’utenteRiepilogo - Input e output8Funzioni
Capire le funzioniDichiarare una funzioneChiamare le funzioniParametri delle funzioniRestituire un singolo valoreRestituire più valoriValori restituiti con nomeFondamenti dell'ambito delle funzioniRiepilogo - Creare codice riutilizzabile3Operatori di base
Operatori aritmeticiOperatore di divisioneL'operatore moduloOperatore di assegnazioneOperatori di assegnazione compostaIncremento e decrementoRiepilogo - Calcoli6Flusso di controllo: condizioni
L'istruzione `if`La parola chiave `else`La parola chiave `else if`Ombreggiamento delle variabili in `if`Inizializzare le variabiliL'istruzione `switch``switch` con espressioni`switch` senza espressioneLa parola chiave `fallthrough`Riepilogo: prendere decisioni9Puntatori
Che cos’è un puntatore?Dichiarare variabili puntatoreL’operatore indirizzoDereferenziare i puntatoriUsare i puntatori nelle funzioniPuntatori nilRipasso - Capire i puntatori12Tipi compositi: mappe
Introduzione alle mappeDichiarare i letterali delle mappeCreare mappe con `make`Aggiungere e aggiornare coppie chiave-valoreAccedere ai valori delle mappeVerificare l'esistenza di una chiaveEliminare elementi dalle mappeLunghezza delle mappeIterare sulle mappeRiepilogo - Archiviazione chiave-valoreEsercitati da solo: Compilatore Go online