Menu
Coddy logo textTech

Podsumowanie — własne struktury danych

Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 101 z 109.

challenge icon

Wyzwanie

Łatwy

Stwórzmy prostą, niestandardową strukturę danych, aby podsumować to, czego nauczyliśmy się o strukturach w Go.

W tym wyzwaniu utworzysz podstawową strukturę danych Counter, która potrafi:

  1. Śledzić wartość licznika
  2. Zwiększać wartość licznika
  3. Zmniejszać wartość licznika
  4. Resetować licznik do zera

Uzupełnij kod, implementując brakujące metody struktury Counter.

Spróbuj swoich sił

package main

import (
	"fmt"
)

// Counter to prosta struktura danych reprezentująca licznik
type Counter struct {
	value int
	name  string
}

// NewCounter tworzy nowy licznik o podanej nazwie
func NewCounter(name string) Counter {
	return Counter{
		value: 0,
		name:  name,
	}
}

// Increment zwiększa wartość licznika o 1
func (c *Counter) Increment() {
	// Dodaj kod zwiększający wartość licznika
}

// Decrement zmniejsza wartość licznika o 1 (ale nie poniżej 0)
func (c *Counter) Decrement() {
	// Dodaj kod zmniejszający wartość licznika
	// Upewnij się, że wartość nie spadnie poniżej 0
}

// Reset przywraca wartość licznika do 0
func (c *Counter) Reset() {
	// Dodaj kod przywracający wartość licznika do 0
}

// Value zwraca bieżącą wartość licznika
func (c Counter) Value() int {
	// Dodaj kod zwracający bieżącą wartość
	return 0 // Zastąp to
}

// String zwraca tekstową reprezentację licznika
func (c Counter) String() string {
	return fmt.Sprintf("%s: %d", c.name, c.value)
}

func main() {
	// Utwórz nowy licznik o nazwie "Visitors"
	visitors := NewCounter("Visitors")
	
	// Zwiększ licznik kilka razy
	visitors.Increment()
	visitors.Increment()
	visitors.Increment()
	
	// Wyświetl bieżącą wartość licznika
	fmt.Println(visitors)
	fmt.Println("Current value:", visitors.Value())
	
	// Zmniejsz licznik
	visitors.Decrement()
	fmt.Println(visitors)
	
	// Zresetuj licznik
	visitors.Reset()
	fmt.Println(visitors)
	
	// Sprawdź, czy wartość licznika nie spada poniżej zera
	visitors.Decrement()
	fmt.Println(visitors)
}

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Go online