Bu bölümde 'map' veya 'mapping' olarak ifade edilen bir konu üzerinde duracağız. Türkçe anlamı 'harita' veya 'haritalama' olarak geçen bu yapılar, aslında bir sözlük gibidir. Sözlüklerdeki gibi bir anahtar kelime (key) vardır bir de değer (value) vardır.
Bir önceki, Array isimli bölümde iller ve plakalar olmak üzere iki farklı Array oluşturmuş ve onlar üzerinde çeşitli işlemler yapmıştık. Peki, iller ve plakaları dizi kullanmadan daha efektif bir şekilde nasıl yazabiliriz? İşte, 'map' burada devreye giriyor. Önce örneğimize bakalım sonra devam edelim.

map anahtar kelimesinin kullanımı tam olarak yukarıdaki gibidir. İlk önce, her zaman yaptığımız gibi bir değişken belirliyoruz. Daha sonra 'map' anahtar kelimesini giriyor, bir köşeli parantez açıp 'key'in alacağı veri tipini belirliyoruz; burada biz, anahtarlarımız yani 'key'lerimiz string olsun istediğimiz için oraya string yazdık. Daha sonra köşeli parantezin dışına da bu sefer 'value'nun alacağı veri tipini belirliyoruz; bunun için de int veri tipini girdik. Bu kısma kadar tamamsa süslü parantezlerimizi açıyoruz ve kodlarımızı yazıyoruz.
Görseldeki kutucukların renk uyumuna dikkat etmenizi rica ediyorum. Burada, az önce belirttiğimiz gibi 'key'lerin string; 'value'ların int olmasını istedik. Bunun için o süslü parantezler içerisine sırasıyla önce 'key', sonra 'value' değerleri girmemiz gerekir. Fakat elbette key ve value değerlerinin veri tipleri farklı olabilir; illa string veya int olacak diye bir şey söz konusu değildir.
Burada; 'Adana' kelimesi bir 'key' iken '1' değeri bir 'value'dur. Yani yukarıda gördüğünüz, bir nevi sözlüktür.
Dikkat etmeniz gereken nokta şu: "Key değerinden sonra ':' koyarız ve value değerini yazarız. Value değerini yazdıktan sonra da satırın bittiğini Go'ya bildirmemiz gerektiği için bir virgül koyarız ve başka değerlerimiz varsa onları yazmaya devam ederiz."
Sonuç olarak bir mapping işleminin yazımı şu şekildedir:
degisken := map[key veri tipi] value veri tipi {
"Key": Value,
}
İsterseniz biraz bunun üzerinde oynamalar yapalım. Diyelim ki biz, Ankara ve Ağrı'nın plakalarını görmek istiyoruz. Ankara için bunu şu şekilde yapabiliriz: 'fmt.Println(iller["Ankara"])'

Yukarıdaki gibi yapıyoruz ve çıktı kısmına baktığımızda karşılıkları olan değeri alıyoruz. Yani key değerini yazıyor ve value değerine erişiyoruz. Peki map içerisinde olmayan bir değeri çağırmak istersek ne olur? 'Hata alırız' dediyseniz bu doğru değil.

Bakın, Kahramanmaraş'ı istedim fakat çıktıya baktığımda '0' değerinin geldiğini gördüm. Bunun nedeni biraz bilgisayarın çalışma yapısından biraz da map yapısının key ve value prensibindendir. Bilgisayarlar her şeyi 0 ve 1 olarak algılarlar. Buradaki 0; 'yok' anlamındadır. Eğer map yapısı içerisine tanımlamadığınız bir değeri çağırırsanız karşınıza 0 değeri gelecektir çünkü ne öyle bir key ne de öyle bir value var.
Şimdi, isterseniz bu map içerisine bir key ve value ekleyelim. Array blogundaki gibi append metodu burada bulunmuyor, haberiniz olsun.

Ekleme işlemini yukarıdaki gibi yapabiliyoruz. Fakat dikkatinizi çekmiştir; burada key'ler alfabetik sıraya göre dizilir. Eğer alfabetik sıraya göre değil de siz nasıl yazmışsanız öyle gösterilsin istiyorsanız bunun için for döngüsü kullanabilirsiniz.

for döngüsünü bu şekilde kullanarak bunu elde edebilirsiniz. Orada, 'range' diye bir kelime var; bunu daha önce görmedik. Bunun Türkçe karşılığı 'aralık'tır. O satırın anlamı ise; "key ve value değişkenleri için aralığı 'iller' olan key ve value'ları yazdır." Bunu nasıl anlatacağımı bilemediğim için bu cümle aklıma geldi; gayet açıklayıcı olduğunu düşünüyorum.
Şimdi bir de silme işlemi yapalım mı?

Bunun için 'delete' anahtar kelimesini kullanıyoruz: 'delete(değişkenimiz, key'imiz)'
Yayınlanma Tarihi: 2022-08-14 21:02:57
Son Düzenleme Tarihi: 2022-08-16 15:15:33