Cara Cek Apakah Map Punya Key Tertentu di Go
Kalau kamu ngoding pakai Go, map pasti jadi salah satu senjata andalan. Struktur data ini simpel tapi kuat: kita bisa nyimpen pasangan key → value
dan aksesnya super cepat.
Salah satu hal yang sering banget dilakukan waktu pakai map adalah ngecek:
“Key ini ada nggak sih di dalam map?”
Go punya cara yang elegan buat itu—nggak ribet, cukup satu trik bawaan bahasa. Yuk kita bahas.
1. Cek Key dengan Idiom Go
Go punya sintaks yang khas buat ngecek key. Waktu kita akses map[key]
, sebenarnya kita bisa ambil dua nilai sekaligus:
- Value yang nyangkut di key itu.
- Boolean
true/false
yang bilang key-nya ada atau nggak.
Contoh:
myMap := map[string]int{
"apple": 1,
"banana": 2,
"cherry": 3,
}
key := "banana"
value, exists := myMap[key]
if exists {
fmt.Printf("Key '%s' ada dengan value %d\n", key, value)
} else {
fmt.Printf("Key '%s' nggak ada\n", key)
}
Kalau exists
bernilai true
, berarti key-nya ketemu. Kalau false
, ya artinya nggak ada. Sesederhana itu.
2. Cek Key yang Nggak Ada
Kebalikannya, kalau mau pastiin suatu key nggak ada, kita bisa langsung pakai !exists
.
key := "grape"
_, exists := myMap[key]
if !exists {
fmt.Printf("Key '%s' nggak ada\n", key)
}
Di sini kita buang value-nya (_
) karena cuma peduli sama status key.
3. Pakai Tipe Kustom sebagai Key
Map di Go nggak terbatas cuma ke string
atau int
. Selama tipenya bisa dibandingkan dengan ==
, bisa aja dipakai jadi key.
Contoh pakai struct
:
type Person struct {
Name string
Age int
}
myMap := map[Person]string{
{"Alice", 30}: "Engineer",
{"Bob", 25}: "Artist",
}
person := Person{Name: "Alice", Age: 30}
value, exists := myMap[person]
if exists {
fmt.Printf("Person '%v' ada dengan value '%s'\n", person, value)
} else {
fmt.Printf("Person '%v' nggak ada\n", person)
}
Cara ngeceknya tetap sama aja.
Penutup
Intinya: kalau mau tahu apakah sebuah map punya key tertentu di Go, cukup gunakan pola value, exists := myMap[key]
. Itu idiom Go yang paling rapi, efisien, dan udah jadi standar di mana-mana.