Cara Ambil Slice Key dari Map di Go
Di Go, map itu andalan banget buat nyimpen data dalam bentuk pasangan key → value
. Tapi kadang kita nggak butuh valuenya, cuma pengen dapetin semua key aja—misalnya buat iterasi, sorting, atau ngecek sesuatu.
Untungnya, cara ambil key dari map di Go itu simpel banget. Mari kita lihat beberapa pola yang biasa dipakai.
1. Ambil Semua Key dengan For-Range
Trik dasar: loop aja map-nya, terus masukin key ke slice.
func getMapKeys(m map[string]int) []string {
keys := make([]string, 0, len(m))
for k := range m {
keys = append(keys, k)
}
return keys
}
func main() {
myMap := map[string]int{
"apple": 1,
"banana": 2,
"cherry": 3,
}
keys := getMapKeys(myMap)
fmt.Println("Keys:", keys)
}
Di sini, saya bikin slice kosong dengan kapasitas sama kayak panjang map (biar lebih efisien). Hasilnya: semua key terkumpul rapi di slice.
2. Urutkan Key
Kalau cuma ngambil key sih gampang. Tapi kalau mau ditampilkan atau diproses dengan urutan tertentu, biasanya kita sort dulu.
import "sort"
func getMapKeys(m map[string]int) []string {
keys := make([]string, 0, len(m))
for k := range m {
keys = append(keys, k)
}
sort.Strings(keys)
return keys
}
Contohnya:
myMap := map[string]int{
"banana": 2,
"apple": 1,
"cherry": 3,
}
keys := getMapKeys(myMap)
fmt.Println("Sorted Keys:", keys) // [apple banana cherry]
3. Kalau Key-nya Bukan String
Map di Go bisa pakai tipe kustom juga sebagai key (asal comparable). Prinsipnya sama: kumpulin dulu, baru urutkan kalau perlu.
type Person struct {
Name string
Age int
}
func getMapKeys(m map[Person]int) []Person {
keys := make([]Person, 0, len(m))
for k := range m {
keys = append(keys, k)
}
sort.Slice(keys, func(i, j int) bool {
return keys[i].Name < keys[j].Name
})
return keys
}
myMap := map[Person]int{
{"Alice", 30}: 1,
{"Bob", 25}: 2,
{"Charlie", 35}: 3,
}
keys := getMapKeys(myMap)
fmt.Println("Sorted Keys:", keys)
Di contoh ini, kita urutkan berdasarkan Name
. Bisa juga berdasarkan Age
, tergantung kebutuhan.
Ringkasnya
- Mau ambil semua key dari map? Iterasi aja, kumpulin ke slice.
- Mau urutan rapi? Pakai
sort
. - Map dengan key kustom? Sama aja, tinggal tentuin cara sortingnya.
Go emang sederhana, tapi fleksibel kalau urusan manipulasi key di map.