Go Academy · Pelajaran

Map: Penyimpanan Kunci-Nilai

Membuat, membaca, menulis, dan menghapus entri map

Pelajaran 3 dari 413 langkah

Map: Penyimpanan Kunci-Nilai adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Apa Itu Map?

Map di Go adalah koleksi pasangan kunci-nilai yang tidak berurutan. Kunci harus memiliki tipe yang dapat dibandingkan (string, bilangan bulat, dan sebagainya). Map adalah tipe referensi yang didukung oleh tabel hash.

Membuat Map

Gunakan literal atau make:

package main
import "fmt"

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

Membaca dan Menulis

Akses nilai dengan m[key] dan tetapkan nilai dengan m[key] = value. Membaca kunci yang tidak ada akan mengembalikan nilai nol:

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
}

Memeriksa Keberadaan Kunci

Bentuk dua nilai membedakan kunci yang tidak ada dari nilai nol:

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
}

Menghapus Entri

Gunakan fungsi bawaan delete. Menghapus kunci yang tidak ada tidak menghasilkan apa-apa:

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]
}

Melakukan Iterasi pada Map

Gunakan range untuk melakukan iterasi. Urutannya tidak dijamin:

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)
    }
}

Map dengan Nilai Struct

Map dapat menyimpan struct sebagai nilai. Perbarui melalui variabel sementara (struct dalam map tidak dapat diambil alamatnya):

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}
}

Map nil

Map nil dibaca seperti map kosong (nilai nol), tetapi menulis ke map nil akan memicu panic:

package main

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

Map Tidak Aman untuk Penggunaan Konkuren

Map bawaan Go tidak aman untuk goroutine. Pembacaan konkuren tidak masalah, tetapi penulisan konkuren (atau pembacaan dan penulisan bersamaan) memerlukan mutex atau sync.Map:

package main
import "sync"

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

Menghitung Frekuensi

Pola map klasik—menghitung kemunculan:

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]
}

Pemeriksaan Singkat

Apa yang terjadi saat Anda membaca kunci yang tidak ada dalam map Go?

Rangkuman: Map

Hal-hal penting:

  • Map adalah penyimpanan kunci-nilai yang tidak berurutan
  • Gunakan bentuk dua nilai untuk memeriksa keberadaan kunci
  • Jangan pernah menulis ke map nil
  • Urutan iterasi acak—urutkan kunci jika diperlukan
  • Lindungi map dengan mutex dalam kode konkuren

Tugas Latihan

Tulis fungsi yang menerima string dan mengembalikan map[rune]int yang menghitung berapa kali setiap karakter muncul. Uji dengan string "hello".

Gratis untuk memulai

Belajar Go dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Map: Penyimpanan Kunci-Nilai” gratis?

Ya — teks lengkap “Map: Penyimpanan Kunci-Nilai” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Map: Penyimpanan Kunci-Nilai”?

Membuat, membaca, menulis, dan menghapus entri map Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Map: Penyimpanan Kunci-Nilai” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Array: Koleksi dengan Panjang Tetap
  2. Slice: Daftar Dinamis
  3. Map: Penyimpanan Kunci-Nilai
  4. Melakukan Iterasi pada Koleksi dengan range
← Kembali ke Go Academy