package main

import "fmt"

// Item adalah struct sederhana yang menjadi nilai map.
type Item struct {
	Nama   string
	Jumlah int
}

func main() {
	// Literal map: key dan value ditulis berpasangan.
	harga := map[string]int{
		"nasi goreng": 25000,
		"mie ayam":    22000,
		"es teh":      5000,
	}
	fmt.Println("harga     :", harga)
	fmt.Println("len(harga):", len(harga))

	// Membuat map kosong dengan make, lalu mengisi bertahap.
	umur := make(map[string]int)
	umur["Budi"] = 25
	umur["Siti"] = 30
	fmt.Println("umur      :", umur)

	// Membaca key yang tidak ada menghasilkan zero value tipe nilai.
	fmt.Println("harga bakso:", harga["bakso"])

	// Nilai bertipe struct: pasangan key-value yang lebih kaya.
	stok := map[string]Item{
		"pulpen": {Nama: "Pulpen Hitam", Jumlah: 12},
		"buku":   {Nama: "Buku Tulis", Jumlah: 40},
	}
	fmt.Println("stok      :", stok)
	fmt.Println("stok pulpen:", stok["pulpen"].Jumlah)
}
