Podsumowanie — własne struktury danych
Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 101 z 109.
Wyzwanie
ŁatwyStwó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:
- Śledzić wartość licznika
- Zwiększać wartość licznika
- Zmniejszać wartość licznika
- 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
4Operatory porównania i logiczne
Operatory porównania – część 1Operatory porównania – część 2Logiczny operator ANDLogiczny operator ORLogiczny operator NOTPodstawy kolejności wykonywania operatorówPodsumowanie – porównywanie7Sterowanie przepływem: pętle
Jak działa pętla `for`Pętla `for` — podstawyPętla `for` — tylko warunekSłowo kluczowe `break`Słowo kluczowe `continue`Pętle zagnieżdżonePodsumowanie — powtarzanie działań10Typy złożone: tablice
Wprowadzenie do tablicDeklarowanie tablicInicjalizacja tablicDostęp do elementów tablicyDługość tablicy za pomocą `len`Iterowanie po tablicachTablice wielowymiarowe13Typy złożone: struktury
Definiowanie własnych typówTworzenie instancji strukturDostęp do pól strukturWskaźniki do strukturInicjalizacja strukturStruktury osadzoneStruktury anonimowePodsumowanie — własne struktury danych2Zmienne i podstawowe typy danych
Czym jest zmiennaWnioskowanie o typie za pomocą `:=`Liczby całkowite (int)Liczby zmiennoprzecinkoweWartości logiczneCiągi znakówWartości zeroweStałeKonwencje nazewnictwaPodsumowanie – zmienne i typy5Podstawowe wejście/wyjście
Formatowane wyjścieSpecyfikatory formatuWyświetlanie typówPobieranie podstawowych danych od użytkownikaPodsumowanie — wejście i wyjście8Funkcje
Zrozumienie funkcjiDeklarowanie funkcjiWywoływanie funkcjiParametry funkcjiZwracanie jednej wartościZwracanie wielu wartościNazwane wartości zwracanePodstawy zakresu funkcjiPodsumowanie — tworzenie wielokrotnego użytku kodu11Typy złożone: wycinki
Wprowadzenie do wycinkówDeklarowanie literałów wycinkówTworzenie wycinków za pomocą `make`Długość a pojemność wycinkaDostęp do elementów wycinkaDodawanie elementówWycinanie z istniejących wycinków i tablicIterowanie po wycinkachKopiowanie wycinkówPodsumowanie — listy dynamiczne3Podstawowe operatory
Operatory arytmetyczneOperator dzieleniaOperator moduloOperator przypisaniaOperatory przypisania z działaniemZwiększanie i zmniejszaniePowtórka – obliczenia6Sterowanie przepływem: instrukcje warunkowe
Instrukcja `if`Słowo kluczowe `else`Słowo kluczowe `else if`Przesłanianie zmiennych w `if`Inicjalizacja zmiennychInstrukcja `switch``switch` z wyrażeniami`switch` bez wyrażeniaSłowo kluczowe `fallthrough`Podsumowanie — podejmowanie decyzjiPoćwicz samodzielnie: Kompilator Go online