Podsumowanie — przechowywanie par klucz–wartość
Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 93 z 109.
Wyzwanie
ŁatwyPoćwiczmy używanie map na przykładzie prostego licznika słów!
Twoim zadaniem jest zaimplementowanie programu, który zlicza, ile razy każde słowo występuje na liście słów.
Wymagania:
- Uzupełnij funkcję
addWord(), która dodaje słowo do mapy licznika - Uzupełnij funkcję
getCount(), która zwraca liczbę wystąpień konkretnego słowa - Uzupełnij funkcję
removeWord(), która usuwa słowo z licznika
To krótkie przypomnienie, jak używać map jako magazynu par klucz-wartość.
Uwaga: dane wyjściowe będą wyświetlać liczbę wystąpień słów w kolejności alfabetycznej, aby zachować spójność.
Spróbuj swoich sił
package main
import (
"fmt"
"sort"
)
// addWord dodaje słowo do mapy zliczającej słowa
func addWord(counter map[string]int, word string) {
// Tu wpisz swój kod
}
// getCount zwraca liczbę wystąpień danego słowa
func getCount(counter map[string]int, word string) int {
// Tu wpisz swój kod
return 0
}
// removeWord usuwa słowo z mapy zliczającej słowa
// Zwraca true, jeśli słowo zostało znalezione i usunięte
func removeWord(counter map[string]int, word string) bool {
// Tu wpisz swój kod
return false
}
// printWordCounts wypisuje liczby wystąpień słów w kolejności alfabetycznej
func printWordCounts(counter map[string]int) {
// Pobierz wszystkie klucze (słowa) z mapy
words := make([]string, 0, len(counter))
for word := range counter {
words = append(words, word)
}
// Posortuj słowa alfabetycznie
sort.Strings(words)
// Wypisz każde słowo i liczbę jego wystąpień w kolejności sortowania
for _, word := range words {
fmt.Printf("%s: %d\n", word, counter[word])
}
}
func main() {
// Zainicjalizuj mapę zliczającą słowa
wordCounter := make(map[string]int)
// Dodaj kilka słów
words := []string{"apple", "banana", "apple", "orange", "banana", "apple"}
for _, word := range words {
addWord(wordCounter, word)
}
// Wypisz liczby wystąpień słów
fmt.Println("Word counts:")
printWordCounts(wordCounter)
// Pobierz liczby wystąpień wybranych słów
fmt.Printf("\nCount for 'apple': %d\n", getCount(wordCounter, "apple"))
fmt.Printf("Count for 'grape': %d\n", getCount(wordCounter, "grape"))
// Usuń słowo
removed := removeWord(wordCounter, "banana")
fmt.Printf("\nRemoved 'banana': %v\n", removed)
// Spróbuj usunąć nieistniejące słowo
removed = removeWord(wordCounter, "grape")
fmt.Printf("Removed 'grape': %v\n", removed)
// Wyświetl końcowe liczby wystąpień słów
fmt.Println("\nFinal word counts:")
printWordCounts(wordCounter)
}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ń2Zmienne 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 decyzji9Wskaźniki
Czym jest wskaźnik?Deklarowanie zmiennych wskaźnikowychOperator pobrania adresuDereferencja wskaźnikówUżywanie wskaźników w funkcjachWskaźniki nilPowtórzenie — zrozumienie wskaźników12Typy złożone: mapy
Wprowadzenie do mapDeklarowanie literałów mapTworzenie map za pomocą `make`Dodawanie i aktualizowanie par klucz–wartośćDostęp do wartości w mapieSprawdzanie, czy klucz istniejeUsuwanie wpisów z mapyDługość mapyIterowanie po mapachPodsumowanie — przechowywanie par klucz–wartośćPoćwicz samodzielnie: Kompilator Go online