# Go Harita

Go haritalar (maps) dersini işliyoruz.
Harita, anahtar ve değer çiftlerinden oluşan bir koleksiyondur. Dizilerde verileri sadece index numaralarıyla tutabilirken map kullanımında indexler yerine anahtar değerler atayabiliriz.
Harita (map) veri tipini kullanabilmek için önce haritayı oluşturmalı, ardından başlatmalıyız.
var x map[string]int // map oluşturma
x = make(map[string]int) // map başlatma
Bir map oluşturduğunuzda öntanımlı olarak nil olur. nil, pointers, interfaces, maps, slices, channels ve function veri tiplerindeki boş değeri temsil eder. Tıpkı integer bir değişkenin öntanımlı değerinin 0 olması gibi. Bunun için oluşturduğumuz haritayı başlatmamız gerekir.
Örnek olarak anahtar tipini string, değer tipini int ayarladıktan sonra artık elemanları oluşturmaya başlayabilirsiniz.
x["sayi"] = 10
x["adet"] = 55
fmt.Println(x) // map[adet:55 sayi:10]
Gördüğünüz gibi dizilerden farklı olarak indexler yerine istediğimiz değerleri kullanarak key oluşturabiliyoruz.

1. Harita Elemanlarına Erişim

Anahtar ve değer çiftiyle oluşturduğumuz haritalarda yer alan elemanlara sadece anahtarı kullanarak erişebiliriz.
package main
import (
"fmt"
)
func main() {
var ogrenci map[string]string
ogrenci = make(map[string]string)
ogrenci["ad"] = "Deniz"
ogrenci["soyad"] = "Barış"
ogrenci["cinsiyet"] = "E"
fmt.Println(ogrenci["ad"]) // Deniz
fmt.Println(ogrenci["soyad"]) // Barış
fmt.Println(ogrenci["cinsiyet"]) // E
}

2. Harita Elemanını Silmek

Haritadan bir elemanı silmek için delete() fonksiyonunu anahtar değer ile beraber kullanabilirsiniz.
var ogrenci map[string]string
ogrenci = make(map[string]string)
ogrenci["ad"] = "Deniz"
ogrenci["soyad"] = "Barış"
ogrenci["cinsiyet"] = "E"
delete(ogrenci,"cinsiyet")
fmt.Println(ogrenci) // map[ad:Deniz soyad:Barış]

3. Haritada Bir Anahtarın Olup Olmadığını Kontrol Etmek

Haritada anahtarın olup olmadığını kontrol edebiliriz. Eğer ilgili anahtara sahip bir değer varsa true, yoksa false döner.
var ogrenci map[string]string
ogrenci = make(map[string]string)
ogrenci["ad"] = "Deniz"
ogrenci["soyad"] = "Barış"
deger1, kontrol1 := ogrenci["cinsiyet"]
deger2, kontrol2 := ogrenci["ad"]
fmt.Println("Mevcut mu?",kontrol1,"Değeri:",deger1)
// Mevcut mu? false Değeri:
fmt.Println("Mevcut mu?",kontrol2,"Değeri:",deger2)
// Mevcut mu? true Değeri: Deniz