Menu
Coddy logo textTech

Итоги: хранилище ключ-значение

Часть раздела Основы путешествия по GO на Coddy — урок 93 из 109.

challenge icon

Задание

Легко

Давайте попрактикуемся в использовании карт (maps) с помощью простого счетчика слов!

Ваша задача — реализовать программу, которая подсчитывает, сколько раз каждое слово встречается в списке слов.

Требования:

  1. Допишите функцию addWord(), которая добавляет слово в карту счетчика
  2. Допишите функцию getCount(), которая возвращает количество для конкретного слова
  3. Допишите функцию removeWord(), которая удаляет слово из счетчика

Это краткий обзор того, как использовать карты в качестве хранилища «ключ-значение».

Примечание: для единообразия результаты подсчета слов будут выводиться в алфавитном порядке.

Попробуйте сами

package main

import (
	"fmt"
	"sort"
)

// addWord добавляет слово в карту счетчика
func addWord(counter map[string]int, word string) {
	// Ваш код здесь
}

// getCount возвращает количество для конкретного слова
func getCount(counter map[string]int, word string) int {
	// Ваш код здесь
	return 0
}

// removeWord удаляет слово из счетчика
// Возвращает true, если слово было найдено и удалено
func removeWord(counter map[string]int, word string) bool {
	// Ваш код здесь
	return false
}

// printWordCounts выводит количество слов в алфавитном порядке
func printWordCounts(counter map[string]int) {
	// Получить все ключи (слова) из карты
	words := make([]string, 0, len(counter))
	for word := range counter {
		words = append(words, word)
	}
	
	// Отсортировать слова по алфавиту
	sort.Strings(words)
	
	// Вывести каждое слово и его количество в отсортированном порядке
	for _, word := range words {
		fmt.Printf("%s: %d\n", word, counter[word])
	}
}

func main() {
	// Инициализировать карту счетчика слов
	wordCounter := make(map[string]int)
	
	// Добавить несколько слов
	words := []string{"apple", "banana", "apple", "orange", "banana", "apple"}
	for _, word := range words {
		addWord(wordCounter, word)
	}
	
	// Вывести количество слов
	fmt.Println("Word counts:")
	printWordCounts(wordCounter)
	
	// Получить количество для конкретных слов
	fmt.Printf("\nCount for 'apple': %d\n", getCount(wordCounter, "apple"))
	fmt.Printf("Count for 'grape': %d\n", getCount(wordCounter, "grape"))
	
	// Удалить слово
	removed := removeWord(wordCounter, "banana")
	fmt.Printf("\nRemoved 'banana': %v\n", removed)
	
	// Попробовать удалить несуществующее слово
	removed = removeWord(wordCounter, "grape")
	fmt.Printf("Removed 'grape': %v\n", removed)
	
	// Вывести итоговое количество слов
	fmt.Println("\nFinal word counts:")
	printWordCounts(wordCounter)
}

Все уроки раздела Основы