Özet - Anahtar-Değer Depolama
Coddy'nin GO Journey'sinin Temeller bölümünün bir parçası — ders 93 / 109.
Görev
KolayBasit 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:
- Sayaç eşlemesine (counter map) bir kelime ekleyen
addWord()fonksiyonunu tamamlayın - Belirli bir kelime için sayım değerini döndüren
getCount()fonksiyonunu tamamlayın - 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
4Karşılaştırma ve Mantıksal Operatörler
Karşılaştırma Operatörleri - Bölüm 1Karşılaştırma Operatörleri - Bölüm 2Mantıksal VE OperatörüMantıksal VEYA OperatörüMantıksal DEĞİL OperatörüOperatör Önceliği TemelleriÖzet - Karşılaştırma Yapma7Kontrol Akışı: Döngüler
`for` Döngüsü Nedir?`for` Döngüsü - Temel`for` Döngüsü - Sadece Koşul`break` Anahtar Kelimesi`continue` Anahtar Kelimesiİç İçe DöngülerÖzet - İşlemleri Tekrarlama2Değişkenler ve Temel Veri Tipleri
Değişken nedir?`:=` ile Tür ÇıkarımıTam Sayılar (int)Ondalıklı SayılarBooleanlarStringlerSıfır DeğerlerSabitlerİsimlendirme KurallarıÖzet - Değişkenler ve Türler5Temel Giriş/Çıkış
Biçimlendirilmiş ÇıktıBiçim BelirteçleriVeri Tiplerini YazdırmaTemel Kullanıcı Girdisi AlmaÖzet - Giriş ve Çıkış8Fonksiyonlar
Fonksiyonları AnlamakFonksiyon TanımlamaFonksiyonları ÇağırmaFonksiyon ParametreleriTek Bir Değer DöndürmeBirden Fazla Değer Döndürmeİsimlendirilmiş Dönüş DeğerleriFonksiyon Kapsamı TemelleriÖzet - Yeniden Kullanılabilir Kod Oluşturma3Temel Operatörler
Aritmetik OperatörlerBölme OperatörüModulo OperatörüAtama OperatörüBileşik Atama OperatörleriArtırma ve AzaltmaÖzet - Hesaplamalar6Kontrol Akışı: Koşullu İfadeler
`if` İfadesi`else` Anahtar Kelimesi`else if` Anahtar Kelimesi`if` İçinde Değişken GölgelemeDeğişkenleri Başlatma`switch` İfadesiİfadeli `switch`İfadesiz `switch``fallthrough` Anahtar KelimesiÖzet - Karar Verme9İşaretçiler
İşaretçi Nedir?İşaretçi Değişkenlerini TanımlamaAdres Operatörüİşaretçi Referansını ÇözmeFonksiyonlarda İşaretçi KullanımıNil İşaretçilerÖzet - İşaretçileri Anlamak12Bileşik Tipler: Mapler
Maplere GirişMap Literallerini Tanımlama`make` ile Map OluşturmaAnahtar-Değer Ekleme ve GüncellemeMap Değerlerine ErişimAnahtar Varlığını Kontrol EtmeMap Öğelerini SilmeMap UzunluğuMapler Üzerinde YinelemeÖzet - Anahtar-Değer Depolama