> For the complete documentation index, see [llms.txt](https://derslik.kerteriz.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://derslik.kerteriz.net/go/temel-dersler/go-veri-tipleri/go-harita.md).

# # Go Harita

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.&#x20;

```go
var x map[string]int        // map oluşturma

x = make(map[string]int)    // map başlatma
```

{% hint style="info" %}
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.
{% endhint %}

Örnek olarak anahtar tipini `string`, değer tipini `int` ayarladıktan sonra artık elemanları oluşturmaya başlayabilirsiniz.&#x20;

```go
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.

```go
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.

```go
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.

```go
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
```
