Menu
Coddy logo textTech

Özet - Anahtar-Değer Depolama

Coddy'nin GO Journey'sinin Temeller bölümünün bir parçası — ders 93 / 109.

challenge icon

Görev

Kolay

Basit bir kelime sayacı ile map (eşleme) kullanımını pratik edelim!

Göreviniz, bir kelime listesinde her bir kelimenin kaç kez geçtiğini sayan bir program uygulamaktır.

Gereksinimler:

  1. Sayaç eşlemesine (counter map) bir kelime ekleyen addWord() fonksiyonunu tamamlayın
  2. Belirli bir kelime için sayım değerini döndüren getCount() fonksiyonunu tamamlayın
  3. Sayaçtan bir kelimeyi silen removeWord() fonksiyonunu tamamlayın

Bu, map yapılarını anahtar-değer (key-value) deposu olarak nasıl kullanacağınızın basit bir özetidir.

Not: Çıktı, tutarlılık sağlamak amacıyla kelime sayılarını alfabetik sırayla görüntüleyecektir.

Kendin dene

package main

import (
	"fmt"
	"sort"
)

// addWord kelimeyi sayaç eşlemine (map) ekler
func addWord(counter map[string]int, word string) {
	// Kodunuz buraya
}

// getCount belirli bir kelimenin sayısını döndürür
func getCount(counter map[string]int, word string) int {
	// Kodunuz buraya
	return 0
}

// removeWord bir kelimeyi sayaçtan kaldırır
// Kelime bulunduysa ve kaldırıldıysa true döndürür
func removeWord(counter map[string]int, word string) bool {
	// Kodunuz buraya
	return false
}

// printWordCounts kelime sayılarını alfabetik sırayla yazdırır
func printWordCounts(counter map[string]int) {
	// Eşlemdeki (map) tüm anahtarları (kelimeleri) al
	words := make([]string, 0, len(counter))
	for word := range counter {
		words = append(words, word)
	}
	
	// Kelimeleri alfabetik olarak sırala
	sort.Strings(words)
	
	// Her kelimeyi ve sayısını sıralı düzende yazdır
	for _, word := range words {
		fmt.Printf("%s: %d\n", word, counter[word])
	}
}

func main() {
	// Kelime sayacı eşlemini (map) başlat
	wordCounter := make(map[string]int)
	
	// Bazı kelimeler ekle
	words := []string{"apple", "banana", "apple", "orange", "banana", "apple"}
	for _, word := range words {
		addWord(wordCounter, word)
	}
	
	// Kelime sayılarını yazdır
	fmt.Println("Word counts:")
	printWordCounts(wordCounter)
	
	// Belirli kelimeler için sayıları al
	fmt.Printf("\nCount for 'apple': %d\n", getCount(wordCounter, "apple"))
	fmt.Printf("Count for 'grape': %d\n", getCount(wordCounter, "grape"))
	
	// Bir kelimeyi kaldır
	removed := removeWord(wordCounter, "banana")
	fmt.Printf("\nRemoved 'banana': %v\n", removed)
	
	// Mevcut olmayan bir kelimeyi kaldırmayı dene
	removed = removeWord(wordCounter, "grape")
	fmt.Printf("Removed 'grape': %v\n", removed)
	
	// Nihai kelime sayılarını yazdır
	fmt.Println("\nFinal word counts:")
	printWordCounts(wordCounter)
}

Temeller bölümündeki tüm dersler