BAB 14: Menyimpan Data Berpasangan dengan Map di Golang - Abd. Asis

BAB 14: Menyimpan Data Berpasangan dengan Map di Golang

Setelah kamu menguasai slice untuk data fleksibel, sekarang waktunya belajar map—struktur data yang memungkinkan kamu menyimpan data berpasangan (key-value). Map sangat berguna untuk aplikasi yang butuh pencarian data cepat, seperti daftar nilai siswa, inventory barang, atau data user.

Apa Itu Map?

Map adalah struktur data di Golang yang menyimpan data dalam format pasangan key dan value. Analoginya kayak kamus: kamu cari arti kata (key), dapat penjelasan (value).

Deklarasi dan Inisialisasi Map

Deklarasi Map

var nilai map[string]int

Inisialisasi Map

nilai := map[string]int{"Budi": 80, "Sari": 90, "Andi": 75}

Menambah dan Mengubah Data Map

nilai := map[string]int{}
nilai["Rina"] = 85
nilai["Budi"] = 90 // update
fmt.Println(nilai) // Output: map[Budi:90 Rina:85]

Mengakses Data Map

nilai := map[string]int{"Budi": 80, "Sari": 90}
fmt.Println(nilai["Sari"]) // Output: 90

Mengecek Key di Map

Gunakan teknik two-value assignment untuk cek apakah key ada di map.

nilai := map[string]int{"Budi": 80}
v, ok := nilai["Budi"]
if ok {
    fmt.Println("Nilai Budi:", v)
} else {
    fmt.Println("Budi tidak ditemukan")
}

Output:

Nilai Budi: 80

Menghapus Data dari Map

Gunakan fungsi delete untuk menghapus data dari map.

nilai := map[string]int{"Budi": 80, "Sari": 90}
delete(nilai, "Budi")
fmt.Println(nilai) // Output: map[Sari:90]

Iterasi Map dengan For Range

nilai := map[string]int{"Budi": 80, "Sari": 90, "Andi": 75}
for nama, skor := range nilai {
    fmt.Printf("%s: %d\n", nama, skor)
}

Output:

Budi: 80
Sari: 90
Andi: 75

Map Multidimensi

Map bisa bersarang, misal untuk data siswa dan nilai per mata pelajaran.

siswa := map[string]map[string]int{
    "Budi": {"Matematika": 80, "Fisika": 85},
    "Sari": {"Matematika": 90, "Fisika": 88},
}
for nama, pelajaran := range siswa {
    fmt.Printf("%s:\n", nama)
    for mapel, nilai := range pelajaran {
        fmt.Printf("  %s: %d\n", mapel, nilai)
    }
}

Output:

Budi:
  Matematika: 80
  Fisika: 85
Sari:
  Matematika: 90
  Fisika: 88

Latihan: Daftar Nilai Siswa

Buat program yang menambah, mengakses, dan menghapus data nilai siswa.

package main

import "fmt"

func main() {
    nilai := map[string]int{}
    nilai["Budi"] = 80
    nilai["Sari"] = 90
    fmt.Println("Nilai awal:", nilai)
    fmt.Println("Nilai Sari:", nilai["Sari"])
    delete(nilai, "Budi")
    fmt.Println("Setelah hapus Budi:", nilai)
    for nama, skor := range nilai {
        fmt.Printf("%s: %d\n", nama, skor)
    }
}

Output:

Nilai awal: map[Budi:80 Sari:90]
Nilai Sari: 90
Setelah hapus Budi: map[Sari:90]
Sari: 90

Ringkasan

Map adalah struktur data yang sangat berguna untuk menyimpan data berpasangan (key-value) di Golang. Dengan map, kamu bisa melakukan pencarian data dengan cepat dan efisien.

  • Deklarasi dan inisialisasi map
  • Menambah, mengubah, dan menghapus data
  • Akses dan pengecekan key
  • Iterasi dan map multidimensi

Di bab berikutnya, kita akan belajar tentang function—cara membuat blok kode reusable yang bikin program kamu lebih modular dan terstruktur!