0Pricing
Go Academy · Ders

Eşlemeler: Anahtar-Değer Depoları

Eşleme girdileri oluşturma, okuma, yazma ve silme

Eşlemeler: Anahtar-Değer Depoları, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Eşleme Nedir?

Go'da bir eşleme, anahtar-değer çiftlerinden oluşan sırasız bir koleksiyondur. Anahtarlar karşılaştırılabilir bir türde olmalıdır (dizeler, tam sayılar vb.). Eşlemeler, karma tablosuyla desteklenen başvuru türleridir.

Eşleme Oluşturma

Bir değişmez veya make kullanınız:

package main
import "fmt"

func main() {
    ages  := map[string]int{"Alice": 30, "Bob": 25}
    cache := make(map[string]string)
    fmt.Println(ages, cache)
}

Okuma ve Yazma

Değerlere m[key] ile erişiniz ve m[key] = value ile atama yapınız. Eksik bir anahtarı okumak sıfır değerini döndürür:

package main
import "fmt"

func main() {
    m := map[string]int{}
    m["hits"] = 10
    m["hits"]++
    fmt.Println(m["hits"])    // 11
    fmt.Println(m["missing"]) // 0
}

Anahtarın Var Olup Olmadığını Denetleme

İki değerli biçim, eksik bir anahtarı sıfır değerinden ayırır:

package main
import "fmt"

func main() {
    m := map[string]int{"a": 0}
    v, ok := m["a"]
    fmt.Println(v, ok) // 0 true
    v2, ok2 := m["z"]
    fmt.Println(v2, ok2) // 0 false
}

Girdileri Silme

Yerleşik delete işlevini kullanınız. Var olmayan bir anahtarı silmek hiçbir işlem yapmaz:

package main
import "fmt"

func main() {
    m := map[string]int{"x": 1, "y": 2}
    delete(m, "x")
    delete(m, "z") // no-op
    fmt.Println(m) // map[y:2]
}

Eşleme Üzerinde Yineleme

Yineleme yapmak için range kullanınız. Sıra garanti edilmez:

package main
import "fmt"

func main() {
    scores := map[string]int{"Alice": 90, "Bob": 85}
    for name, score := range scores {
        fmt.Printf("%s: %d\n", name, score)
    }
}

Yapı Değerleri İçeren Eşlemeler

Eşlemeler, değer olarak yapıları tutabilir. Geçici bir değişken üzerinden güncelleme yapınız; eşlemelerdeki yapılar adreslenebilir değildir:

package main
import "fmt"

type Point struct{ X, Y int }

func main() {
    points := map[string]Point{"A": {1, 2}}
    p := points["A"]
    p.X = 99
    points["A"] = p
    fmt.Println(points["A"]) // {99 2}
}

nil Eşlemeler

nil eşleme, boş bir eşleme gibi okunur (sıfır değerleri döndürür), ancak nil eşlemeye yazmak panic üretir:

package main

func main() {
    var m map[string]int
    _ = m["key"]   // ok — returns 0
    // m["key"] = 1 // PANIC: assignment to nil map
}

Eşlemeler Eşzamanlı Kullanım İçin Güvenli Değildir

Go'nun yerleşik eşlemesi goroutine'ler için güvenli değildir. Eşzamanlı okumalar uygundur, ancak eşzamanlı yazmalar (veya okuma ve yazma birlikte) bir kilit ya da sync.Map gerektirir:

package main
import "sync"

func main() {
    var mu sync.Mutex
    m := map[string]int{}
    mu.Lock()
    m["key"] = 1
    mu.Unlock()
    _ = m
}

Sıklıkları Sayma

Klasik bir eşleme deseni: oluşumları sayma:

package main
import "fmt"

func main() {
    words := []string{"go", "is", "fast", "go", "is", "go"}
    freq := map[string]int{}
    for _, w := range words {
        freq[w]++
    }
    fmt.Println(freq) // map[fast:1 go:3 is:2]
}

Hızlı Kontrol

Go eşlemesinde var olmayan bir anahtarı okuduğunuzda ne olur?

Özet: Eşlemeler

Temel çıkarımlar:

  • Eşlemeler sırasız anahtar-değer depolarıdır
  • Anahtarın var olup olmadığını denetlemek için iki değerli biçimi kullanınız
  • nil eşlemeye asla yazmayınız
  • Yineleme sırası rastgeledir; gerekirse anahtarları sıralayınız
  • Eşzamanlı kodda eşlemeleri bir kilitle koruyunuz

Alıştırma Görevi

Bir dize alan ve her karakterin kaç kez göründüğünü sayan bir map[rune]int döndüren bir işlev yazınız. İşlevi "hello" dizesiyle sınayınız.

Sıkça Sorulan Sorular

“Eşlemeler: Anahtar-Değer Depoları” dersi ücretsiz mi?

Evet — “Eşlemeler: Anahtar-Değer Depoları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“Eşlemeler: Anahtar-Değer Depoları” dersinde ne öğreneceğim?

Eşleme girdileri oluşturma, okuma, yazma ve silme Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Eşlemeler: Anahtar-Değer Depoları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Diziler: Sabit Uzunluklu Koleksiyonlar
  2. Dilimler: Dinamik Listeler
  3. Eşlemeler: Anahtar-Değer Depoları
  4. Koleksiyonları range ile Yineleme
← Go Academy Sayfasına Dön